我已经实现了VoIP应用程序,一切正常。当用户使用Android默认音乐播放器或任何其他第三方应用程序在其设备上播放音乐时,我的应用程序开始响铃或收到消息,我的应用程序的铃声未播放且音乐播放器仍在播放且此情况即使在incall和呼叫终止状态下也会继续发生。
如何检测音乐播放器(此阶段的默认播放器)播放音乐的时间以及如何在我的应用的振铃和呼叫终止状态中暂停和恢复它?
应用程序应在需要使用音频输出时请求音频焦点,音乐或通知声音。一旦它具有Audio Focus的优先级,它就可以自由地使用声音输出,同时收听焦点变化。如果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.
}