我有一个使用TTS(文本到语音)API的Android应用程序。一切都工作得很好,但现在我想淡入/淡出甚至停止音乐(如果用户正在播放带有预建音乐播放器的音乐),当应用程序说出文字时。现在,我认为音乐和TTS消息都在同一个流(MUSIC)上播放,并且很难理解语音消息。
我尝试在不同的流上播放文本,例如AudioManager.STREAM_NOTIFICATIONS。它确实会停止音乐,但在说出文字时不会回来,所以我没有达到目标。还没有找到任何东西,所以我希望有人可以在这里提供帮助。谢谢!
答案 0 :(得分:5)
我终于得到了一些有效的东西。虽然不完美。一个非常脏的技巧。以防它可以帮助某人:
这已在API 8上使用AudioManager的requestAudioFocus和abandomAudioFocus方法修复。
但对于以前的版本,你可以试试这个。通过不同的流通道播放TTS,比方说STREAM_NOTIFICATIONS。然后你只需要将音频焦点返回到STREAM_MUSIC。你怎么能实现这个目标?将静音字符串(“”)发送到TTS但这次通过STREAM_MUSIC。效果将是:音乐停止,您的TTS消息被说出,最后您的音乐在语音警报后返回。不好或不值得骄傲,但......如果有人知道不同的方式,我会很感激
答案 1 :(得分:0)
您可以使用TextToSpeech.OnUtteranceCompletedListener
和AudioManager.setStreamVolume
来实现这一目标吗?