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!

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top