diff --git a/res/values/strings.xml b/res/values/strings.xml index 9880cc2..87a6b85 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -2,4 +2,17 @@ PawletOS PawletOS device settings + + PawletOS + Android settings + + Version + Build type + Device + + Android version + Version codename + Security patch level + Build number + Kernel version diff --git a/res/xml/pawlet_settings.xml b/res/xml/pawlet_settings.xml index b1510fe..76d5a7d 100644 --- a/res/xml/pawlet_settings.xml +++ b/res/xml/pawlet_settings.xml @@ -1,6 +1,42 @@ - + + + + + + + + + + + + + diff --git a/src/me/pawlet/settings/PawletSettingsFragment.kt b/src/me/pawlet/settings/PawletSettingsFragment.kt index 1cbc7a3..75da938 100644 --- a/src/me/pawlet/settings/PawletSettingsFragment.kt +++ b/src/me/pawlet/settings/PawletSettingsFragment.kt @@ -1,11 +1,45 @@ package me.pawlet.settings +import android.os.Build import android.os.Bundle +import android.os.SystemProperties +import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat class PawletSettingsFragment : PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.pawlet_settings, rootKey) + populate() + } + + private fun populate() { + setPref("pawlet_version", SystemProperties.get("ro.pawlet.display.version", Build.UNKNOWN)) + setPref("pawlet_build_type", SystemProperties.get("ro.pawlet.releasetype", Build.UNKNOWN)) + setPref("pawlet_device", Build.MODEL) + + setPref("android_version", Build.VERSION.RELEASE) + setPref("android_codename", resolveCodename()) + setPref("android_security_patch", Build.VERSION.SECURITY_PATCH) + setPref("android_build_number", Build.DISPLAY) + setPref("android_kernel", System.getProperty("os.version") ?: Build.UNKNOWN) + } + + private fun setPref(key: String, value: String) { + findPreference(key)?.summary = value + } + + private fun resolveCodename(): String { + val raw = SystemProperties.get("ro.build.version.codename", "REL") + if (raw != "REL") return raw + return when (Build.VERSION.SDK_INT) { + 36 -> "Baklava" + 35 -> "VanillaIceCream" + 34 -> "UpsideDownCake" + 33 -> "Tiramisu" + 32, 31 -> "Snow Cone" + 30 -> "RedVelvetCake" + else -> Build.VERSION.RELEASE + } } }