Android: MediaPlayer AUDIOFOCUS_LOSS & setOnErrorListener () Problem
Ich erstelle eine Musik-Player-App.
Wenn ich überprüfe, ob meine Anwendung AudioFocus verliert, stoppt die Wiedergabe. Dies wirft jedoch das Problem auf, dass ich, wenn ich einen Titel wiedergebe, ihn stoppe und dann wiedergebe,switch case AudioManager.AUDIOFOCUS_LOSS
wird gerufen, in dem ich den Player angehalten habe, da er den Fokus verliert.
Meine eigene App verliert also den Fokus auf sich. Offensichtlich waren dies nicht meine Absichten. Ich wollte, dass es aufgerufen wird, wenn ein anderer Musikplayer den Fokus anfordert.
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;
}
}
};
Es gibt noch ein Problem, Ausnahme, die ich bekommen habe, istIllegalStateException
.
Dies bedeutet, wenn der Code nach innen reichtcase AudioManager.AUDIOFOCUS_LOSS
Mein Musikplayer befindet sich in einem fehlerhaften Zustand. Um das zu überprüfen, habe ich einOnErrorListener
mit:
//Inside Service - onCreate() Method
mPlayer.setOnErrorListener(mErrorListener);
Aber dieser Zuhörer wird nie angerufen. Ich werde jede Hilfe zu schätzen wissen.