Я хочу обработать это исключение (exoplayer прекращает воспроизведение HLS):
2020-02-20 15:15:42.735 23397-23457/pack.packE/ExoPlayerImplInternal: Source error.
com.google.android.exoplayer2.source.BehindLiveWindowException
at com.google.android.exoplayer2.source.hls.HlsChunkSource.getNextChunk(HlsChunkSource.java:287)
Благодаря stackOF я знаю, что могу сделать это следующим образом:
@Override
public void onError(Exception e) {
if (e instanceof ExoPlaybackException && e.getCause() instanceof BehindLiveWindowException) {
preparePlayer(true);
}
}
но для этого я должен использовать Rx Java. К сожалению, до этого я слышал только о Rx Java. Я этого не знал.
Так что вы можете посоветовать мне для обработки этого исключения, реализации Rx et c?
Может быть я может справиться с этим даже без Rx?
Я сделал:
implementation 'io.reactivex:rxjava:1.2.3'
implementation 'io.reactivex:rxandroid:1.2.1'
и это внутри моей Деятельности, в onCreate()
//RXJava
// create observable
Observable<String> observable = Observable.from(new String[]{"one", "two", "three"});
// create observer
Observer<String> observer = new Observer<String>() {
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError: " + e);
if (e instanceof ExoPlaybackException && e.getCause() instanceof BehindLiveWindowException) {
// startHLS(sourceForHLS);
}
}
@Override
public void onNext(String s) {
Log.d(TAG, "onNext: " + s);
}
};
К сожалению, это все.
UPD:
Полные журналы:
2020-02-27 11:52:24.161 5399-5467/pack.packE E/ExoPlayerImplInternal: Source error.
com.google.android.exoplayer2.source.BehindLiveWindowException
at com.google.android.exoplayer2.source.hls.HlsChunkSource.getNextChunk(HlsChunkSource.java:287)
at com.google.android.exoplayer2.source.hls.HlsSampleStreamWrapper.continueLoading(HlsSampleStreamWrapper.java:561)
at com.google.android.exoplayer2.source.CompositeSequenceableLoader.continueLoading(CompositeSequenceableLoader.java:78)
at com.google.android.exoplayer2.source.hls.HlsMediaPeriod.continueLoading(HlsMediaPeriod.java:247)
at com.google.android.exoplayer2.MediaPeriodHolder.continueLoading(MediaPeriodHolder.java:155)
at com.google.android.exoplayer2.ExoPlayerImplInternal.maybeContinueLoading(ExoPlayerImplInternal.java:1595)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleContinueLoadingRequested(ExoPlayerImplInternal.java:1567)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:324)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)