[Android] Fix restoring playback speed by using the correct class

Nicolas Pomepuy git at videolan.org
Fri May 16 13:23:24 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Tue May 13 07:36:17 2025 +0200| [fa03929661d140d4c05fec4e32475451b6a39816] | committer: Duncan McNamara

Fix restoring playback speed by using the correct class

> https://code.videolan.org/videolan/vlc-android/commit/fa03929661d140d4c05fec4e32475451b6a39816
---

 .../src/main/java/org/videolan/tools/Settings.kt   |  2 +-
 .../vlc/gui/preferences/search/PreferenceParser.kt | 47 ++++++++++++----------
 2 files changed, 27 insertions(+), 22 deletions(-)

diff --git a/application/tools/src/main/java/org/videolan/tools/Settings.kt b/application/tools/src/main/java/org/videolan/tools/Settings.kt
index 4591faffa0..fabe3cfd59 100644
--- a/application/tools/src/main/java/org/videolan/tools/Settings.kt
+++ b/application/tools/src/main/java/org/videolan/tools/Settings.kt
@@ -297,7 +297,7 @@ fun SharedPreferences.putSingle(key: String, value: Any) {
         is Long -> edit { putLong(key, value) }
         is String -> edit { putString(key, value) }
         is List<*> -> edit { putStringSet(key, value.toSet() as Set<String>) }
-        else -> throw IllegalArgumentException("value class is invalid!")
+        else -> throw IllegalArgumentException("value $value class is invalid!")
     }
 }
 
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt b/application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt
index 79bf29f4bd..a29c943cf4 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt
@@ -75,6 +75,27 @@ import java.io.OutputStreamWriter
 
 object PreferenceParser {
 
+    // Other settings that should be backed up and restored
+    val additionalSettings = arrayOf(
+        KEY_SHOW_UPDATE,
+        KEY_SHOW_WHATS_NEW,
+        AUDIO_DELAY_GLOBAL,
+        AUDIO_PLAY_PROGRESS_MODE,
+        KEY_PLAYBACK_SPEED_VIDEO_GLOBAL,
+        KEY_PLAYBACK_SPEED_AUDIO_GLOBAL,
+        KEY_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE,
+        KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE,
+        KEY_INCOGNITO_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE,
+        KEY_INCOGNITO_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE,
+        SCREEN_ORIENTATION,
+        PREF_TIPS_SHOWN,
+        PREF_WIDGETS_TIPS_SHOWN,
+        PREF_RESTORE_VIDEO_TIPS_SHOWN,
+        PREF_SHOW_VIDEO_SETTINGS_DISCLAIMER,
+        DISPLAY_UNDER_NOTCH,
+
+        )
+
     /**
      * Parses all the preferences available in the app.
      * @param context the context to be used to retrieve the preferences
@@ -228,7 +249,7 @@ object PreferenceParser {
         addAllOtherPrefs(context, allChangedPrefs)
         for (allChangedPref in allChangedPrefs) {
             when {
-                allChangedPref.second is Boolean || allChangedPref.second is Int || allChangedPref.second is Long -> append("\"${allChangedPref.first}\": ${allChangedPref.second}")
+                allChangedPref.second is Float || allChangedPref.second is Boolean || allChangedPref.second is Int || allChangedPref.second is Long -> append("\"${allChangedPref.first}\": ${allChangedPref.second}")
                 else -> append("\"${allChangedPref.first}\": \"${allChangedPref.second}\"")
             }
             if (allChangedPref != allChangedPrefs.last()) append(", ")
@@ -237,25 +258,6 @@ object PreferenceParser {
         append("}")
     }
 
-    val additionalSettings = arrayOf(
-        KEY_SHOW_UPDATE,
-        KEY_SHOW_WHATS_NEW,
-        AUDIO_DELAY_GLOBAL,
-        AUDIO_PLAY_PROGRESS_MODE,
-        KEY_PLAYBACK_SPEED_VIDEO_GLOBAL,
-        KEY_PLAYBACK_SPEED_AUDIO_GLOBAL,
-        KEY_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE,
-        KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE,
-        KEY_INCOGNITO_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE,
-        KEY_INCOGNITO_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE,
-        SCREEN_ORIENTATION,
-        PREF_TIPS_SHOWN,
-        PREF_WIDGETS_TIPS_SHOWN,
-        PREF_RESTORE_VIDEO_TIPS_SHOWN,
-        PREF_SHOW_VIDEO_SETTINGS_DISCLAIMER,
-        DISPLAY_UNDER_NOTCH,
-
-    )
     private fun addAllOtherPrefs(context: Context, pairs: ArrayList<Pair<String, Any>>) {
         for ((key, value) in Settings.getInstance(context).all) {
             if (key.startsWith("custom_equalizer_")) {
@@ -425,7 +427,10 @@ object PreferenceParser {
 
             savedSettings?.forEach { saved ->
                 additionalSettings.forEach {
-                    if (it == saved.key) newPrefs.putSingle(it, saved.value)
+                    if (it == saved.key) {
+                        val value = if (saved.value is Double) (saved.value as Double).toFloat() else saved.value
+                        newPrefs.putSingle(it, value)
+                    }
                 }
             }
         }



More information about the Android mailing list