diff --git a/res/values/integers.xml b/res/values/integers.xml
index 5b68147..9cb9e2d 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 74cd18a..1d92448 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 5766a35..7b317d3 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;
}
}