summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorH. Lehmann <ByteHamster@users.noreply.github.com>2019-09-26 19:01:28 +0200
committerGitHub <noreply@github.com>2019-09-26 19:01:28 +0200
commitb0a77bf000a7a94151057bc1c7fd6a0280d40df8 (patch)
treead68940b0472815e8f226abc96f8d45c2beb9199 /core/src
parent1e883758e4de47fe6f9dccec09c1979cb9ae93e5 (diff)
parent56d08c429119a288a6f8f8eddc41b80f2559ffb3 (diff)
downloadAntennaPod-b0a77bf000a7a94151057bc1c7fd6a0280d40df8.zip
Merge pull request #3455 from ByteHamster/rxjava-buffering
Using RxJava to update buffering
Diffstat (limited to 'core/src')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java29
1 files changed, 14 insertions, 15 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java
index 7af33f8f9..af86db633 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java
@@ -2,7 +2,6 @@ package de.danoeh.antennapod.core.service.playback;
import android.content.Context;
import android.net.Uri;
-import android.os.Handler;
import android.view.SurfaceHolder;
import com.google.android.exoplayer2.C;
@@ -25,36 +24,36 @@ import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
import org.antennapod.audio.MediaPlayer;
import de.danoeh.antennapod.core.util.playback.IPlayer;
+import java.util.concurrent.TimeUnit;
+
public class ExoPlayerWrapper implements IPlayer {
private final Context mContext;
+ private final Disposable bufferingUpdateDisposable;
private SimpleExoPlayer mExoPlayer;
private MediaSource mediaSource;
private MediaPlayer.OnSeekCompleteListener audioSeekCompleteListener;
private MediaPlayer.OnCompletionListener audioCompletionListener;
private MediaPlayer.OnErrorListener audioErrorListener;
private MediaPlayer.OnBufferingUpdateListener bufferingUpdateListener;
- private boolean shouldCheckBufferingUpdates = true;
ExoPlayerWrapper(Context context) {
mContext = context;
mExoPlayer = createPlayer();
- Handler handler = new Handler(); // Main thread
- handler.postDelayed(new Runnable() {
- @Override
- public void run() {
- if (bufferingUpdateListener != null) {
- bufferingUpdateListener.onBufferingUpdate(null, mExoPlayer.getBufferedPercentage());
- }
- if (shouldCheckBufferingUpdates) {
- handler.postDelayed(this, 2000);
- }
- }
- }, 2000);
+ bufferingUpdateDisposable = Observable.interval(2, TimeUnit.SECONDS)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(aLong -> {
+ if (bufferingUpdateListener != null) {
+ bufferingUpdateListener.onBufferingUpdate(null, mExoPlayer.getBufferedPercentage());
+ }
+ });
}
private SimpleExoPlayer createPlayer() {
@@ -168,7 +167,7 @@ public class ExoPlayerWrapper implements IPlayer {
@Override
public void release() {
- shouldCheckBufferingUpdates = false;
+ bufferingUpdateDisposable.dispose();
if (mExoPlayer != null) {
mExoPlayer.release();
}