Android: MediaPlayer AUDIOFOCUS_LOSS e setOnErrorListener ()

Estou criando um aplicativo de player de música.

Na medida em que estou verificando se meu aplicativo perde AudioFocus, a reprodução será interrompida. Mas isso está levantando uma questão que quando eu toco uma faixa - depois paro e - então reproduzo uma faixa novamente,switch case AudioManager.AUDIOFOCUS_LOSS está sendo chamado em que eu parei o jogador, pois está perdendo o foco.

Então, meu próprio aplicativo está perdendo o foco para si mesmo. Obviamente, estas não eram minhas intenções. Eu queria que ele fosse chamado quando algum outro tocador de música solicitasse foco.

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

Existe mais um problema, Exceção que eu estava recebendo éIllegalStateException.

Isso significa que quando o código chega dentrocase AudioManager.AUDIOFOCUS_LOSS, meu musicplayer está em algum estado errôneo. Então, para verificar isso, eu registrei umOnErrorListener usando:

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

Mas esse ouvinte nunca é chamado. Aprecio qualquer ajuda.

questionAnswers(2)

yourAnswerToTheQuestion