Question

J'ai une application Android qui utilise l'API TTS (Text to speech). Tout fonctionne parfaitement, mais maintenant je veux fade in / out ou même de la musique arrêt (en cas l'utilisateur joue de la musique avec lecteur préconstruits Music), lorsque l'application parle d'un texte. En ce moment, je pense que la musique et les messages TTS sont lus sur le même flux (MUSIC), et il peut être difficile de comprendre les messages vocaux.

J'ai essayé de jouer le texte sur un autre flux, comme AudioManager.STREAM_NOTIFICATIONS. Il fait arrêter la musique, mais ne revient pas lorsque le texte est parlé, donc je ne l'ai pas atteindre l'objectif. Vous n'avez pas encore trouvé quoi que ce soit, donc j'espère que quelqu'un peut aider. Merci!

Était-ce utile?

La solution

J'ai finalement obtenu quelque chose qui fonctionne. Pas parfait cependant. Un truc assez sale. Juste au cas où il peut aider à quelqu'un:

est fixé sur l'API 8 avec des méthodes requestAudioFocus et abandomAudioFocus de AudioManager.

Mais pour les versions précédentes, vous pouvez essayer. Jouez TTS à travers un canal de flux différents, disons STREAM_NOTIFICATIONS. Ensuite, il vous suffit de replacer le focus audio à STREAM_MUSIC. Comment pouvez-vous y parvenir ?. Envoi d'une chaîne de silence ( » « ) pour TTS, mais cette fois-ci par STREAM_MUSIC. L'effet sera: la musique est arrêtée, votre message est TTS parlé, et enfin votre musique est de retour après l'alerte vocale. Pas agréable ou quelque chose de se sentir fier, mais ... si quelqu'un sait d'une manière différente, je vais l'apprécier

Autres conseils

Pouvez-vous utiliser le TextToSpeech.OnUtteranceCompletedListener avec AudioManager.setStreamVolume pour y parvenir?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top