Я хочу реализовать метод 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.?