我正在创建一个音乐播放器应用程序。
我正在检查我的应用程序是否丢失了 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
。
这意味着当代码到达 inside 时case AudioManager.AUDIOFOCUS_LOSS
,我的音乐播放器处于某种错误状态。所以为了检查,我注册了一个OnErrorListener
使用:
//Inside Service - onCreate() Method
mPlayer.setOnErrorListener(mErrorListener);
但是这个监听器永远不会被调用。我会接受任何帮助。