Внедрение Rx Java в android проект - PullRequest
1 голос
/ 20 февраля 2020

Я хочу обработать это исключение (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)
...