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
+ }
}
}