From 4ec02fd780297c68dc5c2ae9144c5f56dfb400a1 Mon Sep 17 00:00:00 2001 From: Luca Stefani Date: Tue, 10 Jul 2018 21:32:07 +0200 Subject: [PATCH] Updater: Improve battery check * Lower default value by 10% * Decrease the level by another 10% if charging * Always allow installation in case device doesn't have a battery * Show the requirements in the alert dialog Change-Id: Iebb10220612006fbd096eb474cf3034ef52144b3 --- res/values/integers.xml | 3 ++- res/values/strings.xml | 2 +- .../lineageos/updater/UpdatesListAdapter.java | 22 +++++++++++++++---- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/res/values/integers.xml b/res/values/integers.xml index 5b68147b..9cb9e2da 100644 --- a/res/values/integers.xml +++ b/res/values/integers.xml @@ -1,4 +1,5 @@ - 40 + 20 + 30 diff --git a/res/values/strings.xml b/res/values/strings.xml index 74cd18ac..1d924487 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -57,7 +57,7 @@ Preparing for first boot Preliminary update preparation Low battery - The battery level is too low, please charge your device to continue. + The battery level is too low, you need at least %1$d%% of the battery to continue, %2$d%% if charging. Reboot diff --git a/src/org/lineageos/updater/UpdatesListAdapter.java b/src/org/lineageos/updater/UpdatesListAdapter.java index 5766a350..7b317d38 100644 --- a/src/org/lineageos/updater/UpdatesListAdapter.java +++ b/src/org/lineageos/updater/UpdatesListAdapter.java @@ -16,7 +16,9 @@ package org.lineageos.updater; import android.content.Intent; +import android.content.IntentFilter; import android.content.SharedPreferences; +import android.content.res.Resources; import android.os.BatteryManager; import android.preference.PreferenceManager; import android.support.design.widget.Snackbar; @@ -424,9 +426,13 @@ public class UpdatesListAdapter extends RecyclerView.Adapter= mActivity.getResources().getInteger(R.integer.battery_ok_percentage); + Intent intent = mActivity.registerReceiver(null, + new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); + if (!intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false)) { + return true; + } + int percent = Math.round(100.f * intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 100) / + intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100)); + int required = intent.getBooleanExtra(BatteryManager.EXTRA_PLUGGED, false) ? + mActivity.getResources().getInteger(R.integer.battery_ok_percentage_charging) : + mActivity.getResources().getInteger(R.integer.battery_ok_percentage_discharging); + return percent >= required; } }