我创建一个音乐播放器应用程序。
在我检查,如果我的应用程序失去AudioFocus然后播放将停止。 但是,这是提高一个问题,当我播放曲目-然后停止它, -然后重新播放曲目, switch case AudioManager.AUDIOFOCUS_LOSS
获取调用中,我已经停止播放器,因为它失去焦点。
所以我自己的应用程序失去焦点本身。 显然,这些都不是我的意图。 我想,当一些其他的音乐播放器的要求,重点它被调用。
private OnAudioFocusChangeListener focusChangeListener = new OnAudioFocusChangeListener() {
@Override
public void onAudioFocusChange(int focusChange) {
switch (focusChange) {
case AudioManager.AUDIOFOCUS_LOSS:
if (mPlayer.isPlaying()) {
stopPlayback();
}
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
if (mPlayer.isPlaying()) {
mPlayer.pause();
}
break;
case AudioManager.AUDIOFOCUS_GAIN:
if (!mPlayer.isPlaying()) {
initiatePlayback();
}
break;
}
}
};
还有一个问题 ,那异常,我得到的是IllegalStateException
。
这意味着,当里面的代码达到case AudioManager.AUDIOFOCUS_LOSS
,我musicplayer是一些错误的状态。 所以要检查,我注册了一个OnErrorListener
使用:
//Inside Service - onCreate() Method
mPlayer.setOnErrorListener(mErrorListener);
但这个监听器永远不会被调用。 我会appreteate任何帮助。