summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyler Nijmeh <tylernij@gmail.com>2021-03-30 22:31:42 -0700
committerTyler Nijmeh <tylernij@gmail.com>2021-03-30 22:31:42 -0700
commit73a57d94670ffbffb708d84998e609395ed10938 (patch)
tree6489ceb06b07b2200a8a805d44abfe4238ff6764
parentd2050820b2ecf2258072117510cc06859bab7870 (diff)
Add battery manager utility
Signed-off-by: Tyler Nijmeh <tylernij@gmail.com>
-rw-r--r--app/src/main/java/com/draco/buoy/repositories/BatterySaverSecureSettings.kt9
-rw-r--r--app/src/main/java/com/draco/buoy/utils/BatterySaverManager.kt59
2 files changed, 68 insertions, 0 deletions
diff --git a/app/src/main/java/com/draco/buoy/repositories/BatterySaverSecureSettings.kt b/app/src/main/java/com/draco/buoy/repositories/BatterySaverSecureSettings.kt
new file mode 100644
index 0000000..c769cf5
--- /dev/null
+++ b/app/src/main/java/com/draco/buoy/repositories/BatterySaverSecureSettings.kt
@@ -0,0 +1,9 @@
+package com.draco.buoy.repositories
+
+/**
+ * Expose secure settings hidden in the Android APIs
+ */
+object BatterySaverSecureSettings {
+ const val BATTERY_SAVER_CONSTANTS = "battery_saver_constants"
+ const val LOW_POWER = "low_power"
+} \ No newline at end of file
diff --git a/app/src/main/java/com/draco/buoy/utils/BatterySaverManager.kt b/app/src/main/java/com/draco/buoy/utils/BatterySaverManager.kt
new file mode 100644
index 0000000..d8f5c5b
--- /dev/null
+++ b/app/src/main/java/com/draco/buoy/utils/BatterySaverManager.kt
@@ -0,0 +1,59 @@
+package com.draco.buoy.utils
+
+import android.content.ContentResolver
+import android.provider.Settings
+import com.draco.buoy.models.BatterySaverConstantsConfig
+import com.draco.buoy.repositories.BatterySaverSecureSettings
+
+class BatterySaverManager(private val contentResolver: ContentResolver) {
+ /**
+ * Reset constants to default values
+ */
+ fun resetConstants() {
+ Settings.Global.putString(
+ contentResolver,
+ BatterySaverSecureSettings.BATTERY_SAVER_CONSTANTS,
+ null
+ )
+ }
+
+ /**
+ * Enable or disable low power mode
+ */
+ fun setBatterySaverState(state: Boolean) {
+ val intBool = if (state) 1 else 0
+ Settings.Global.putInt(
+ contentResolver,
+ BatterySaverSecureSettings.LOW_POWER,
+ intBool
+ )
+ }
+
+ /**
+ * Get current low power state
+ */
+ fun getBatteryPowerSaverState(): Boolean {
+ return Settings.Global.getInt(
+ contentResolver,
+ BatterySaverSecureSettings.LOW_POWER
+ ) == 1
+ }
+
+ /**
+ * Set the raw battery saver constants secure setting
+ */
+ fun setConstantsString(constants: String) {
+ Settings.Global.putString(
+ contentResolver,
+ BatterySaverSecureSettings.BATTERY_SAVER_CONSTANTS,
+ constants
+ )
+ }
+
+ /**
+ * Set the battery saver constants secure setting via a config
+ */
+ fun setConstantsConfig(config: BatterySaverConstantsConfig) {
+ setConstantsString(config.toString())
+ }
+} \ No newline at end of file