Отслеживание состояния android медиаплеера - PullRequest
1 голос
/ 05 марта 2020

Я хочу реализовать метод setPrepared (), чтобы проверить, готов мой игрок или нет.

Чтобы сделать это, я использовал этот метод:

private void onPrepared(MediaPlayer mp) {

    ((GomusMediaPlayer)mp).setPrepared(true);
    Timber.log(Log.DEBUG, "Player prepared!");
    mIsPrepared = true;
    startCurrentPlayer(mCurrentPlayback);
    Timber.log(Log.DEBUG, "OK");
    Timber.log(Log.DEBUG, "Set onCompletion listener...");
    setOnCompletionListenerCurrentPlayer(this::onCompletion);
    Timber.log(Log.DEBUG, "OK");
    initTimer();
    Timber.log(Log.DEBUG, "OK");
    isPlayingMedia = true;
    Timber.log(Log.DEBUG, "Notify playback started");
    notifyPlaybackStarted();
}

Внутри моего настроенного Объект MediaPlayer Я реализовал этот метод:

public void setPrepared(boolean prepared) {
    isPrepared = prepared;
}

Также внутри метода reset () я установил его как false следующим образом:

@Override
public void reset() {
    super.reset();
    mIsPlayingMedia = false;
    setPrepared(false);
}

Однако эта строка выдает ошибку:

if(mCurrentPlayer.isPrepared()) {
    Timber.log(Log.DEBUG, "mCurrentPlayer.isPrepared()");

    mOnPrepared.onPrepared(mCurrentPlayer);
}
else {
    Timber.log(Log.DEBUG, "!!!!mCurrentPlayer.isPrepared()");

    mCurrentPlayer.prepareAsync();
}

В другом состоянии я получаю эту ошибку:

E/MediaPlayerNative: prepareAsync called in state 1, mPlayer(0x0)
2020-03-05 12:30:54.128 11990-11990/br.com.gomus.androidapp W/System.err: java.lang.IllegalStateException
2020-03-05 12:30:54.129 11990-11990/br.com.gomus.androidapp W/System.err:     at android.media.MediaPlayer.prepareAsync(Native Method)
2020-03-05 12:30:54.129 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.infrastructure.mediaplayer.CrossfadeMediaPlayer.prepareAsync(CrossfadeMediaPlayer.java:159)
2020-03-05 12:30:54.130 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.infrastructure.mediaplayer.GomusMediaPlayerManager.prepareAsyncCurrentPlayer(GomusMediaPlayerManager.java:163)
2020-03-05 12:30:54.131 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.infrastructure.mediaplayer.GomusMediaPlayerManager.onDataSourceLoaded(GomusMediaPlayerManager.java:223)
2020-03-05 12:30:54.131 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.infrastructure.mediaplayer.GomusMediaPlayerManager.setDataSourceCurrentMediaPlayer(GomusMediaPlayerManager.java:215)
2020-03-05 12:30:54.131 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.infrastructure.mediaplayer.GomusMediaPlayerManager.playMedia(GomusMediaPlayerManager.java:147)
2020-03-05 12:30:54.131 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.infrastructure.mediaplayer.GomusMediaPlayerManager.play(GomusMediaPlayerManager.java:120)
2020-03-05 12:30:54.132 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.infrastructure.mediaplayer.MediaPlayerService.play(MediaPlayerService.java:309)
2020-03-05 12:30:54.132 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.domain.interactors.mediaplayer.music.MusicPlayerInteractorImpl.playSong(MusicPlayerInteractorImpl.java:130)
2020-03-05 12:30:54.132 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.domain.interactors.mediaplayer.music.MusicPlayerInteractorImpl.lambda$saveCurrentPlaybackInfoAndPlaySpot$3$MusicPlayerInteractorImpl(MusicPlayerInteractorImpl.java:523)
2020-03-05 12:30:54.132 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.domain.interactors.mediaplayer.music.-$$Lambda$MusicPlayerInteractorImpl$kuGiiVkYQREJ94guBEM8_nKKy98.call(Unknown Source:4)
2020-03-05 12:30:54.132 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.infrastructure.mediaplayer.CrossfadeMediaPlayer.lambda$doFadeOut$2(CrossfadeMediaPlayer.java:531)
2020-03-05 12:30:54.132 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.infrastructure.mediaplayer.-$$Lambda$CrossfadeMediaPlayer$29RttM8ywbIIvM9J-ss12cVGILs.call(Unknown Source:4)
2020-03-05 12:30:54.133 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.infrastructure.mediaplayer.GomusMediaPlayer$2.lambda$run$0$GomusMediaPlayer$2(GomusMediaPlayer.java:156)
2020-03-05 12:30:54.133 11990-11990/br.com.gomus.androidapp W/System.err:     at br.com.gomus.androidapp.infrastructure.mediaplayer.-$$Lambda$GomusMediaPlayer$2$Zg7IOwHxL_380ClFJXsE17LpxQQ.run(Unknown Source:4)
2020-03-05 12:30:54.133 11990-11990/br.com.gomus.androidapp W/System.err:     at android.os.Handler.handleCallback(Handler.java:790)
2020-03-05 12:30:54.133 11990-11990/br.com.gomus.androidapp W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:99)
2020-03-05 12:30:54.133 11990-11990/br.com.gomus.androidapp W/System.err:     at android.os.Looper.loop(Looper.java:164)
2020-03-05 12:30:54.133 11990-11990/br.com.gomus.androidapp W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6626)
2020-03-05 12:30:54.133 11990-11990/br.com.gomus.androidapp W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
2020-03-05 12:30:54.134 11990-11990/br.com.gomus.androidapp W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
2020-03-05 12:30:54.134 11990-11990/br.com.gomus.androidapp W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)

, что означает, что чего-то не хватает с моим методом setPrepared (). Должен ли я установить значение false, когда проигрыватель запускается, останавливается или сбрасывается и т. Д. c.?

...