summaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
authorJonas Kalderstam <jonas@cowboyprogrammer.org>2019-09-12 10:57:16 +0200
committerJonas Kalderstam <jonas@cowboyprogrammer.org>2019-09-12 10:57:16 +0200
commit6b1a7a9162cb27f0b2aa3e550069945b6e0d95f3 (patch)
tree67d0125a98af7f50bfdc42cd08c6af158977995e /app/src/main
parent4054c330acce74976a3e42e7ccc1f0d1dcb69c14 (diff)
downloadAntennaPod-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')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java22
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java2
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();
}
}