我已经实现了VoIP应用程序,一切正常。当用户使用Android默认音乐播放器或任何其他第三方应用在其设备上播放音乐时,我的应用开始响铃或收到消息,我的应用的铃声未播放且音乐播放器仍然即使在呼叫和呼叫终止状态下,这种情况仍然会发生。
如何检测音乐播放器(此阶段的默认播放器)播放音乐的时间以及如何在应用的响铃和呼叫终止状态下暂停和恢复音乐?
答案 0 :(得分:3)
应用程序应该在需要使用音频输出时请求音频焦点,音乐或通知声音。一旦它具有Audio Focus的优先级,它就可以自由地使用声音输出,同时收听焦点变化。如果Audio Focus失去焦点,它应该立即终止音频或将其降低到安静的水平,并且只有在再次获得焦点时才能恢复大声播放。
如果应用程序需要输出音乐,则应要求提供音频焦点。应该从AudioManager调用方法requestAudioFocus()
。
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int result = audioManager.requestAudioFocus( this, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN);
if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED)
{
// could not get audio focus.
}