diff options
author | ByteHamster <info@bytehamster.com> | 2020-05-20 12:20:24 +0200 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2020-07-16 17:01:53 +0200 |
commit | 17b9579dfea12b9b6289982e3fd4251ecf12b86d (patch) | |
tree | 4eaebae338101b71269134049f802d0d92103fb8 /core | |
parent | 663c715e3f675b23424290ffc3a7ad0d91d3796a (diff) | |
download | AntennaPod-17b9579dfea12b9b6289982e3fd4251ecf12b86d.zip |
New playback speed dialog
Diffstat (limited to 'core')
3 files changed, 25 insertions, 11 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java index 597d88787..5bfaa758b 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java @@ -19,10 +19,14 @@ import org.json.JSONException; import java.io.File; import java.io.IOException; import java.net.Proxy; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -414,7 +418,7 @@ public class UserPreferences { return prefs.getBoolean(PREF_PLAYBACK_SKIP_SILENCE, false); } - public static float[] getPlaybackSpeedArray() { + public static List<Float> getPlaybackSpeedArray() { return readPlaybackSpeedArray(prefs.getString(PREF_PLAYBACK_SPEED_ARRAY, null)); } @@ -662,10 +666,13 @@ public class UserPreferences { .apply(); } - public static void setPlaybackSpeedArray(String[] speeds) { + public static void setPlaybackSpeedArray(List<Float> speeds) { + DecimalFormatSymbols format = new DecimalFormatSymbols(Locale.US); + format.setDecimalSeparator('.'); + DecimalFormat speedFormat = new DecimalFormat("0.00", format); JSONArray jsonArray = new JSONArray(); - for (String speed : speeds) { - jsonArray.put(speed); + for (float speed : speeds) { + jsonArray.put(speedFormat.format(speed)); } prefs.edit() .putString(PREF_PLAYBACK_SPEED_ARRAY, jsonArray.toString()) @@ -775,13 +782,13 @@ public class UserPreferences { } } - private static float[] readPlaybackSpeedArray(String valueFromPrefs) { + private static List<Float> readPlaybackSpeedArray(String valueFromPrefs) { if (valueFromPrefs != null) { try { JSONArray jsonArray = new JSONArray(valueFromPrefs); - float[] selectedSpeeds = new float[jsonArray.length()]; + List<Float> selectedSpeeds = new ArrayList<>(); for (int i = 0; i < jsonArray.length(); i++) { - selectedSpeeds[i] = (float) jsonArray.getDouble(i); + selectedSpeeds.add((float) jsonArray.getDouble(i)); } return selectedSpeeds; } catch (JSONException e) { @@ -790,7 +797,7 @@ public class UserPreferences { } } // If this preference hasn't been set yet, return the default options - return new float[] { 0.75f, 1.0f, 1.25f, 1.5f, 1.75f, 2.0f }; + return Arrays.asList(0.75f, 1.0f, 1.25f, 1.5f, 1.75f, 2.0f); } public static String getMediaPlayer() { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java index 44f5f9b11..d47d26af9 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java @@ -599,6 +599,13 @@ public class PlaybackController { } public void setPlaybackSpeed(float speed) { + PlaybackPreferences.setCurrentlyPlayingTemporaryPlaybackSpeed(speed); + if (getMedia() != null && getMedia().getMediaType() == MediaType.VIDEO) { + UserPreferences.setVideoPlaybackSpeed(speed); + } else { + UserPreferences.setPlaybackSpeed(speed); + } + if (playbackService != null) { playbackService.setSpeed(speed); } else { diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index b5b327a90..431133aff 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -311,8 +311,9 @@ <string name="download_plugin_label">Download Plugin</string> <string name="no_playback_plugin_title">Plugin Not Installed</string> <string name="no_playback_plugin_or_sonic_msg">For variable speed playback to work, we recommend to enable the built-in Sonic mediaplayer.</string> - <string name="set_playback_speed_label">Playback Speeds</string> <string name="enable_sonic">Enable Sonic</string> + <string name="speed_presets">Presets</string> + <string name="preset_already_exists">%1$.2fx is already saved as a preset.</string> <!-- Empty list labels --> <string name="no_items_header_label">No queued episodes</string> @@ -441,8 +442,7 @@ <string name="pref_gpodnet_login_status"><![CDATA[Logged in as <i>%1$s</i> with device <i>%2$s</i>]]></string> <string name="pref_gpodnet_notifications_title">Show sync error notifications</string> <string name="pref_gpodnet_notifications_sum">This setting does not apply to authentication errors.</string> - <string name="pref_playback_speed_title">Playback Speeds</string> - <string name="pref_playback_speed_sum">Customize the speeds available for variable speed audio playback</string> + <string name="pref_playback_speed_sum">Customize the speeds available for variable speed playback</string> <string name="pref_feed_playback_speed_sum">The speed to use when starting audio playback for episodes in this podcast</string> <string name="pref_feed_skip">Auto Skip</string> <string name="pref_feed_skip_sum">Skip introductions and ending credits.</string> |