desaparecer e sair da música enquanto falava um texto
-
27-09-2019 - |
Pergunta
Eu tenho um aplicativo Android que utiliza a API TTS (texto da fala). Tudo está funcionando perfeitamente, mas agora eu quero desbotar ou até parar a música (caso o usuário esteja tocando música com um tocador de música pré -construído), quando o aplicativo fala um texto. No momento, acho que as mensagens de música e TTS são tocadas no mesmo fluxo (música) e pode ser difícil entender as mensagens de voz.
Eu tentei reproduzir o texto em um fluxo diferente, como audiomanager.stream_notificações. Isso para a música, mas não volta quando o texto é falado, então eu não atingi o objetivo. Ainda não encontrei nada, então espero que alguém possa ajudar aqui. Obrigado!
Solução
Eu finalmente consegui algo que está funcionando. Não é perfeito embora. Um truque bastante sujo. Apenas no caso de ajudar a alguém:
Isso é fixado na API 8 com os métodos RequestaudioFocus e abandonoaudiofocus do Audiomanager.
Mas para versões anteriores, você pode tentar isso. Jogue TTS através de um canal de fluxo diferente, digamos Stream_Notificações. Então você só precisa devolver o foco de áudio ao stream_music. Como você pode conseguir isso?. Enviando uma string de silêncio ("") para TTS, mas desta vez através do stream_music. O efeito será: a música é interrompida, sua mensagem TTS é falada e, finalmente, sua música está de volta após o alerta da voz. Não é legal ou algo para se sentir orgulhoso, mas ... se alguém souber de uma maneira diferente, vou apreciar
Outras dicas
Você poderia usar o TextToSpeech.OnUtteranceCompletedListener
juntamente com AudioManager.setStreamVolume
Para alcançar isto?