我有一个Android MediaPlayer正在运行,我想在语音合成器开始讲话时暂停(具体来说,当Google导航应用程序提供指示时)。我很确定这是可能的,因为标准的音乐播放器似乎有这种行为。
我已经(从Stack Overflow Gods)学会了如何在通话期间暂停MediaPlayer:
Pause music player on a phone call and again resume it after phone call in android
我很惊讶我找不到类似的机制来监听语音合成器中的事件。我认为我错过了一些东西,如果有人能指出我的链接,或者甚至暗示这里的答案,我将非常感激。
答案 0 :(得分:1)
我找到了答案:
http://developer.android.com/reference/android/media/AudioManager.OnAudioFocusChangeListener.html
导航应用使用“通知”流调用音频焦点。我在我的应用程序中请求该流(以及音乐流)的音频焦点。在回调方法中暂停/重启播放器以进行音频焦点更改,您可以继续使用。
注意:这不适用于所有合成语音。我已经尝试使用语音合成设置菜单中的测试按钮,但不会触发回调。它只适用于“竞争”应用程序足够好以便为适当的流请求音频焦点。