diff options
author | Jonas Kalderstam <jonas@cowboyprogrammer.org> | 2019-12-01 21:50:31 +0100 |
---|---|---|
committer | Jonas Kalderstam <jonas@cowboyprogrammer.org> | 2019-12-01 21:54:00 +0100 |
commit | 407e70ad2b8b84ffa9042271718c7a5cb0ca0fc8 (patch) | |
tree | 40342f4f7cea651f8b8d245cd9c880442255cad5 /core | |
parent | 90f578aa48b300e8e7dbc05bc7d065e06b0cd641 (diff) | |
download | AntennaPod-407e70ad2b8b84ffa9042271718c7a5cb0ca0fc8.zip |
Added playback params to wrapper so speed can be changed while paused
You can't modify playback params on the ExoPlayer while paused (see
https://github.com/google/ExoPlayer/issues/4064) so added a member
object which *can* be modified while playback is paused. These
parameters are always applied on start of playback.
Fixes #3651
Diffstat (limited to 'core')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java | 10 |
1 files changed, 7 insertions, 3 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 c988ef70e..c250cd17f 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 @@ -46,11 +46,13 @@ public class ExoPlayerWrapper implements IPlayer { private MediaPlayer.OnCompletionListener audioCompletionListener; private MediaPlayer.OnErrorListener audioErrorListener; private MediaPlayer.OnBufferingUpdateListener bufferingUpdateListener; + private PlaybackParameters playbackParameters; ExoPlayerWrapper(Context context) { mContext = context; mExoPlayer = createPlayer(); + playbackParameters = mExoPlayer.getPlaybackParameters(); bufferingUpdateDisposable = Observable.interval(2, TimeUnit.SECONDS) .observeOn(AndroidSchedulers.mainThread()) @@ -145,7 +147,7 @@ public class ExoPlayerWrapper implements IPlayer { @Override public float getCurrentSpeedMultiplier() { - return mExoPlayer.getPlaybackParameters().speed; + return playbackParameters.speed; } @Override @@ -225,8 +227,8 @@ public class ExoPlayerWrapper implements IPlayer { @Override public void setPlaybackParams(float speed, boolean skipSilence) { - PlaybackParameters params = mExoPlayer.getPlaybackParameters(); - mExoPlayer.setPlaybackParameters(new PlaybackParameters(speed, params.pitch, skipSilence)); + playbackParameters = new PlaybackParameters(speed, playbackParameters.pitch, skipSilence); + mExoPlayer.setPlaybackParameters(playbackParameters); } @Override @@ -247,6 +249,8 @@ public class ExoPlayerWrapper implements IPlayer { @Override public void start() { mExoPlayer.setPlayWhenReady(true); + // Can't set params when paused - so always set it on start in case they changed + mExoPlayer.setPlaybackParameters(playbackParameters); } @Override |