[Android] Add more backup/restore preferences

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


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Mon May 12 10:32:36 2025 +0200| [af8833bf0cbf0161a6baac21169a3a989be9cc84] | committer: Duncan McNamara

Add more backup/restore preferences

Including playback settings and equalizer bands

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

 .../vlc/gui/preferences/search/PreferenceParser.kt | 63 ++++++++++++++++++++++
 1 file changed, 63 insertions(+)

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 d01b312eef..79bf29f4bd 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
@@ -40,7 +40,23 @@ import com.squareup.moshi.Types
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.withContext
 import kotlinx.parcelize.Parcelize
+import org.videolan.tools.AUDIO_DELAY_GLOBAL
+import org.videolan.tools.AUDIO_PLAY_PROGRESS_MODE
 import org.videolan.tools.CloseableUtils
+import org.videolan.tools.DISPLAY_UNDER_NOTCH
+import org.videolan.tools.KEY_INCOGNITO_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE
+import org.videolan.tools.KEY_INCOGNITO_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE
+import org.videolan.tools.KEY_PLAYBACK_SPEED_AUDIO_GLOBAL
+import org.videolan.tools.KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE
+import org.videolan.tools.KEY_PLAYBACK_SPEED_VIDEO_GLOBAL
+import org.videolan.tools.KEY_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE
+import org.videolan.tools.KEY_SHOW_UPDATE
+import org.videolan.tools.KEY_SHOW_WHATS_NEW
+import org.videolan.tools.PREF_RESTORE_VIDEO_TIPS_SHOWN
+import org.videolan.tools.PREF_SHOW_VIDEO_SETTINGS_DISCLAIMER
+import org.videolan.tools.PREF_TIPS_SHOWN
+import org.videolan.tools.PREF_WIDGETS_TIPS_SHOWN
+import org.videolan.tools.SCREEN_ORIENTATION
 import org.videolan.tools.Settings
 import org.videolan.tools.putSingle
 import org.videolan.tools.wrap
@@ -209,6 +225,7 @@ object PreferenceParser {
     private fun getChangedPrefsJson(context: Context) = buildString {
         append("{")
         val allChangedPrefs = getAllChangedPrefs(context)
+        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}")
@@ -220,6 +237,40 @@ 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_")) {
+                value?.let {
+                    pairs.add(Pair(key, it))
+                }
+            }
+            if (key in additionalSettings) {
+                value?.let {
+                    pairs.add(Pair(key, it))
+                }
+            }
+        }
+    }
+
     /**
      * Parse a preference xml resource to get a list of [PreferenceItem]
      * @param context the context to be used to retrieve the preferences
@@ -365,6 +416,18 @@ object PreferenceParser {
                     }
                 }
             }
+            //restore other settings
+            savedSettings?.forEach {
+                if (it.key.startsWith("custom_equalizer_")) {
+                    newPrefs.putSingle(it.key, it.value)
+                }
+            }
+
+            savedSettings?.forEach { saved ->
+                additionalSettings.forEach {
+                    if (it == saved.key) newPrefs.putSingle(it, saved.value)
+                }
+            }
         }
     }
 }



More information about the Android mailing list