aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabriele M <moto.falcon.git@gmail.com>2018-04-28 15:34:03 +0200
committerGabriele M <moto.falcon.git@gmail.com>2018-06-13 23:30:08 +0200
commitf9463c3770c3720b2fe93714ab039f12d7127f95 (patch)
treeb3fc3025e9ce83d06fd271e923666a9f616fcc13
parent0332be5ec7f1637101434c335ba78ed0dce30baa (diff)
downloadandroid_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.xml4
-rw-r--r--res/values/strings.xml2
-rw-r--r--src/org/lineageos/updater/controller/UpdateInstaller.java18
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);