diff options
author | Jonas Kalderstam <jonas@cowboyprogrammer.org> | 2019-09-12 10:57:16 +0200 |
---|---|---|
committer | Jonas Kalderstam <jonas@cowboyprogrammer.org> | 2019-09-12 10:57:16 +0200 |
commit | 6b1a7a9162cb27f0b2aa3e550069945b6e0d95f3 (patch) | |
tree | 67d0125a98af7f50bfdc42cd08c6af158977995e /app/src/main/java/de | |
parent | 4054c330acce74976a3e42e7ccc1f0d1dcb69c14 (diff) | |
download | AntennaPod-6b1a7a9162cb27f0b2aa3e550069945b6e0d95f3.zip |
Fixed playback speed issues when switching to next media
Fixes some issues related to the playback speed when playback was
completed or playback was paused and the app went away for awhile.
Now a media item which is "in progress" will remember its playback
speed so that it can be restored properly. The per-feed-media speed is
cleared once playback finishes, either by reaching the end or by the
user starting to play something different.
Diffstat (limited to 'app/src/main/java/de')
3 files changed, 15 insertions, 11 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java index 222923448..5e81295b1 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java @@ -11,9 +11,11 @@ import java.text.DecimalFormatSymbols; import java.util.Locale; import java.util.concurrent.atomic.AtomicBoolean; +import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.MediaType; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.playback.PlaybackService; +import de.danoeh.antennapod.core.util.playback.Playable; import de.danoeh.antennapod.dialog.VariableSpeedDialog; /** @@ -24,9 +26,6 @@ public class AudioplayerActivity extends MediaplayerInfoActivity { private final AtomicBoolean isSetup = new AtomicBoolean(false); - // Used to work around race condition in updating the controller speed and receiving the callback that it has changed - private float playbackSpeed = -1; - @Override protected void onResume() { super.onResume(); @@ -81,10 +80,7 @@ public class AudioplayerActivity extends MediaplayerInfoActivity { } float speed = 1.0f; if(controller.canSetPlaybackSpeed()) { - speed = playbackSpeed; - if (speed == -1) { - speed = getPlaybackSpeedForMedia(); - } + speed = getPlaybackSpeedForMedia(); } String speedStr = new DecimalFormat("0.00x").format(speed); butPlaybackSpeed.setText(speedStr); @@ -136,9 +132,10 @@ public class AudioplayerActivity extends MediaplayerInfoActivity { break; } } - playbackSpeed = Float.parseFloat(newSpeed); + + storeNewMediaPlaybackSpeed(newSpeed); UserPreferences.setPlaybackSpeed(newSpeed); - controller.setPlaybackSpeed(playbackSpeed); + controller.setPlaybackSpeed(Float.parseFloat(newSpeed)); onPositionObserverUpdate(); } else { VariableSpeedDialog.showGetPluginDialog(this); @@ -151,4 +148,11 @@ public class AudioplayerActivity extends MediaplayerInfoActivity { butPlaybackSpeed.setVisibility(View.VISIBLE); } } + + private void storeNewMediaPlaybackSpeed(String speed) { + Playable media = controller.getMedia(); + if (media instanceof FeedMedia) { + ((FeedMedia) media).updateLastPlaybackSpeed(speed); + } + } } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java index 9f364fec1..b6697ef52 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -879,7 +879,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements boolean isFeedMedia = media instanceof FeedMedia; if (isFeedMedia) { - return ((FeedMedia) media).getFeedPlaybackSpeed(); + return ((FeedMedia) media).getMediaPlaybackSpeed(); } } diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java index 4c52e7c75..86720f40a 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java @@ -219,7 +219,7 @@ public class PlaybackControlsDialog extends DialogFragment { boolean isFeedMedia = media instanceof FeedMedia; if (isFeedMedia) { - return ((FeedMedia) media).getFeedPlaybackSpeed(); + return ((FeedMedia) media).getMediaPlaybackSpeed(); } } |