我正在使用后台服务在应用程序中开发一个带有背景声音的应用程序,所以问题是我正在运行我的应用程序,如果我的音乐播放器正在运行 - 两者之间都发生了声音冲突。
我的问题:如何防止音乐播放器声音与我应用的背景声音冲突
实际:音乐互相冲突。
预期:如果玩家正在运行它必须是暂停和背景声音 我的应用只是播放。
答案 0 :(得分:1)
您必须request audio focus致电requestAudioFocus()。这通知其他应用程序您想要播放某些内容并且它们应该停止(如果您正在连续播放背景声音,则请求AUDIOFOCUS_GAIN。)
请注意,requestAudioFocus
要求您传递OnAudioFocusChangeListener - 就像其他应用一样,当其他应用请求音频焦点并停止背景声音时,您应同时尊重。
注意:您还应该始终能够关闭背景声音(以及任何音频焦点请求)。这样即使在您的应用中,用户也可以继续收听他们的音乐。
答案 1 :(得分:1)
我如何解决这个问题,我只是通过停止播放音乐播放器和播放应用程序背景音乐来解决两个音乐的冲突。
AudioManager.OnAudioFocusChangeListener afChangeListener;
AudioManager am = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
int result = am.requestAudioFocus(afChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
// Start playback.
mPlayer.setLooping(true);
final float volume = (float) (1 - (Math.log(MAX_VOLUME - 85) / Math.log(MAX_VOLUME)));
mPlayer.setVolume(volume, volume);
mPlayer.start();
}
} catch (Exception e) {
e.printStackTrace();
}
注意:代码仅用于停止音乐,而不用于恢复音乐。