0
我正在創建音樂播放器應用程序。如何將我的MusicPlayer應用程序保存到OnAudioFocusChangeListener
我想:
- 當用戶使用我的應用程序播放歌曲,那麼默認的音樂播放器應該得到停止(播放)
- 如果其他一些應用程序開始播放時,我的應用程序已經打我的時候應該停下來。
我可以用第一點使用Audio Focus來解決問題。 但對於第二點,即處理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()
當應用程序丟失音頻焦點。
由於