我创建一个音乐播放器应用程序。
我想要:
- 当用户使用我的应用程序播放歌曲,那么默认的音乐播放器应该得到停止(播放)
- 如果其他一些应用程序启动时我的应用程序已经在玩耍,然后我的应该得到停止。
我能够使用第1点制定出音频焦点 。 但对于第二点,即处理AUDIOFOCUS_LOSS
,我遇到了一些问题。
问题:我已经试过了文档,但我应该怎么注册我的音乐播放器服务来检测AudioFocus已丢失。
对于第一点,这里是代码:
if (reqAudioFocus()) {
mPlayer.start();
}
private boolean reqAudioFocus() {
boolean gotFocus = false;
int audioFocus = am.requestAudioFocus(null, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN);
if (audioFocus == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
gotFocus = true;
} else {
gotFocus = false;
}
return gotFocus;
}
对于第二点我到目前为止的代码:
//Class implements OnAudioFocusChangeListener
@Override
public void onAudioFocusChange(int focusChange) {
/*
* TODO : Call stopService/onDestroy() method. Pause the track; Change
* the Play/Pause icon; save the track postion for seekTo() method.
*/
if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) {
// TODO: Pause playback
if (mPlayer.isPlaying()) {
mPlayer.pause();
}
} else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
// TODO: Resume Playback
if (!mPlayer.isPlaying()) {
mPlayer.start();
}
} else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
// TODO: stop playback.
// am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);
am.abandonAudioFocus(afChangeListener);
}
}
现在,如何让我的应用程序调用onAudioFocusChange()
当应用程序失去焦点的音频。
谢谢