diff options
author | Gabriele M <moto.falcon.git@gmail.com> | 2018-04-28 15:34:03 +0200 |
---|---|---|
committer | Gabriele M <moto.falcon.git@gmail.com> | 2018-06-13 23:30:08 +0200 |
commit | f9463c3770c3720b2fe93714ab039f12d7127f95 (patch) | |
tree | b3fc3025e9ce83d06fd271e923666a9f616fcc13 | |
parent | 0332be5ec7f1637101434c335ba78ed0dce30baa (diff) | |
download | android_packages_apps_Updater-f9463c3770c3720b2fe93714ab039f12d7127f95.tar.gz android_packages_apps_Updater-f9463c3770c3720b2fe93714ab039f12d7127f95.tar.bz2 android_packages_apps_Updater-f9463c3770c3720b2fe93714ab039f12d7127f95.zip |
Requre a minimum remaining battery capacity to install updates
The recovery doesn't install the update if the remaining battery
capacity isn't at least 20% (or 15% if charging). Require at least
40%, just to be safe.
Change-Id: I5cd7c40f029141cde2b0922b25fece2b55989710
-rw-r--r-- | res/values/integers.xml | 4 | ||||
-rw-r--r-- | res/values/strings.xml | 2 | ||||
-rw-r--r-- | src/org/lineageos/updater/controller/UpdateInstaller.java | 18 |
3 files changed, 24 insertions, 0 deletions
diff --git a/res/values/integers.xml b/res/values/integers.xml new file mode 100644 index 0000000..5b68147 --- /dev/null +++ b/res/values/integers.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <integer name="battery_ok_percentage">40</integer> +</resources> diff --git a/res/values/strings.xml b/res/values/strings.xml index 8e7a8fb..d4709c5 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -56,6 +56,8 @@ <string name="finalizing_package">Finalizing package installation</string> <string name="preparing_ota_first_boot">Preparing for first boot</string> <string name="dialog_prepare_zip_message">Preliminary update preparation</string> + <string name="dialog_battery_low_title">Low battery</string> + <string name="dialog_battery_low_message">The battery level is too low, please charge your device to continue.</string> <string name="reboot">Reboot</string> diff --git a/src/org/lineageos/updater/controller/UpdateInstaller.java b/src/org/lineageos/updater/controller/UpdateInstaller.java index a9e1595..bb81a0a 100644 --- a/src/org/lineageos/updater/controller/UpdateInstaller.java +++ b/src/org/lineageos/updater/controller/UpdateInstaller.java @@ -17,11 +17,14 @@ package org.lineageos.updater.controller; import android.content.Context; import android.content.SharedPreferences; +import android.os.BatteryManager; import android.os.SystemClock; import android.os.SystemProperties; +import android.support.v7.app.AlertDialog; import android.support.v7.preference.PreferenceManager; import android.util.Log; +import org.lineageos.updater.R; import org.lineageos.updater.misc.Constants; import org.lineageos.updater.misc.FileUtils; import org.lineageos.updater.misc.Utils; @@ -65,12 +68,27 @@ class UpdateInstaller { return sInstallingUpdate != null && sInstallingUpdate.equals(downloadId); } + private static boolean isBatteryLevelOk(Context context) { + BatteryManager bm = context.getSystemService(BatteryManager.class); + int percent = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY); + return percent >= context.getResources().getInteger(R.integer.battery_ok_percentage); + } + void install(String downloadId) { if (isInstalling()) { Log.e(TAG, "Already installing an update"); return; } + if (!isBatteryLevelOk(mContext)) { + new AlertDialog.Builder(mContext) + .setTitle(R.string.dialog_battery_low_title) + .setMessage(R.string.dialog_battery_low_message) + .setPositiveButton(android.R.string.ok, null) + .show(); + return; + } + UpdateInfo update = mUpdaterController.getUpdate(downloadId); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext); long buildTimestamp = SystemProperties.getLong(Constants.PROP_BUILD_DATE, 0); |