Android: MediaPlayer AUDIOFOCUS_LOSS y setOnErrorListener () problema

Estoy creando una aplicación de reproductor de música.

En eso estoy comprobando si mi aplicación pierde AudioFocus y luego la reproducción se detendrá. Pero esto plantea un problema que cuando reproduzco una pista, luego la detengo y, luego, la reproducción de nuevo,switch case AudioManager.AUDIOFOCUS_LOSS está siendo llamado en el que he detenido al jugador, ya que está perdiendo el enfoque.

Así que mi propia aplicación está perdiendo el foco en sí misma. Obviamente, estas no eran mis intenciones. Quería que me llamaran cuando algún otro reproductor de música pidió atención.

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

Hay un problema mas, La excepción que estaba obteniendo esIllegalStateException.

Esto significa que cuando el código llega al interior.case AudioManager.AUDIOFOCUS_LOSSMi reproductor de música está en algún estado erróneo. Así que para comprobar eso, registré unOnErrorListener utilizando:

//Inside Service - onCreate() Method
mPlayer.setOnErrorListener(mErrorListener);

Pero este oyente nunca es llamado. Voy a interpretar cualquier ayuda.

Respuestas a la pregunta(2)

Su respuesta a la pregunta