Android: MediaPlayer AUDIOFOCUS_LOSS & setOnErrorListener () проблема
Я создаю приложение для музыкального плеера.
Так как я проверяю, теряет ли мое приложение 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;
}
}
};
There is one more problemИсключение, которое я получаю,IllegalStateException
.
Это означает, что когда код достигаетcase AudioManager.AUDIOFOCUS_LOSS
Мой музыкальный проигрыватель в каком-то ошибочном состоянии.
Чтобы проверить это, я зарегистрировалOnErrorListener
с помощью:
//Inside Service - onCreate() Method
mPlayer.setOnErrorListener(mErrorListener);
Но этот слушатель никогда не вызывается. Я аппретирую любую помощь.