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);

Но этот слушатель никогда не вызывается. Я аппретирую любую помощь.

Ответы на вопрос(2)

Ваш ответ на вопрос