diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index cf0dfd7696e53..907fd8f77cc0d 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -126,4 +126,9 @@ false + + 15 + + 20 + diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index eb151835a5d0e..2a55d85382d55 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -1460,8 +1460,8 @@ The battery is getting low: - less than %d%% - remaining. + %d%% + or less remaining. diff --git a/services/java/com/android/server/BatteryService.java b/services/java/com/android/server/BatteryService.java index 53edf31a20395..bb369366837db 100644 --- a/services/java/com/android/server/BatteryService.java +++ b/services/java/com/android/server/BatteryService.java @@ -90,9 +90,6 @@ class BatteryService extends Binder { // This should probably be exposed in the API, though it's not critical private static final int BATTERY_PLUGGED_NONE = 0; - private static final int BATTERY_LEVEL_CLOSE_WARNING = 20; - private static final int BATTERY_LEVEL_WARNING = 15; - private final Context mContext; private final IBatteryStats mBatteryStats; @@ -114,7 +111,10 @@ class BatteryService extends Binder { private int mLastBatteryVoltage; private int mLastBatteryTemperature; private boolean mLastBatteryLevelCritical; - + + private int mLowBatteryWarningLevel; + private int mLowBatteryCloseWarningLevel; + private int mPlugType; private int mLastPlugType = -1; // Extra state so we can detect first run @@ -127,6 +127,11 @@ class BatteryService extends Binder { mContext = context; mBatteryStats = BatteryStatsService.getService(); + mLowBatteryWarningLevel = mContext.getResources().getInteger( + com.android.internal.R.integer.config_lowBatteryWarningLevel); + mLowBatteryCloseWarningLevel = mContext.getResources().getInteger( + com.android.internal.R.integer.config_lowBatteryCloseWarningLevel); + mUEventObserver.startObserving("SUBSYSTEM=power_supply"); // set initial status @@ -271,13 +276,15 @@ class BatteryService extends Binder { final boolean oldPlugged = mLastPlugType != BATTERY_PLUGGED_NONE; /* The ACTION_BATTERY_LOW broadcast is sent in these situations: - * - is just un-plugged (previously was plugged) and battery level is under WARNING, or - * - is not plugged and battery level crosses the WARNING boundary (becomes < 15). + * - is just un-plugged (previously was plugged) and battery level is + * less than or equal to WARNING, or + * - is not plugged and battery level falls to WARNING boundary + * (becomes <= mLowBatteryWarningLevel). */ final boolean sendBatteryLow = !plugged && mBatteryStatus != BatteryManager.BATTERY_STATUS_UNKNOWN - && mBatteryLevel < BATTERY_LEVEL_WARNING - && (oldPlugged || mLastBatteryLevel >= BATTERY_LEVEL_WARNING); + && mBatteryLevel <= mLowBatteryWarningLevel + && (oldPlugged || mLastBatteryLevel > mLowBatteryWarningLevel); sendIntent(); @@ -299,7 +306,7 @@ class BatteryService extends Binder { mSentLowBatteryBroadcast = true; statusIntent.setAction(Intent.ACTION_BATTERY_LOW); mContext.sendBroadcast(statusIntent); - } else if (mSentLowBatteryBroadcast && mLastBatteryLevel >= BATTERY_LEVEL_CLOSE_WARNING) { + } else if (mSentLowBatteryBroadcast && mLastBatteryLevel >= mLowBatteryCloseWarningLevel) { mSentLowBatteryBroadcast = false; statusIntent.setAction(Intent.ACTION_BATTERY_OKAY); mContext.sendBroadcast(statusIntent); diff --git a/services/java/com/android/server/status/StatusBarPolicy.java b/services/java/com/android/server/status/StatusBarPolicy.java index da64e54393cd3..6570bcdd495b3 100644 --- a/services/java/com/android/server/status/StatusBarPolicy.java +++ b/services/java/com/android/server/status/StatusBarPolicy.java @@ -670,11 +670,9 @@ public class StatusBarPolicy { private void showLowBatteryWarning() { closeLastBatteryView(); - /* Show exact battery level. - * Add 1 because the text says "less than X%". - */ + // Show exact battery level. CharSequence levelText = mContext.getString( - com.android.internal.R.string.battery_low_percent_format, mBatteryLevel + 1); + com.android.internal.R.string.battery_low_percent_format, mBatteryLevel); if (mBatteryLevelTextView != null) { mBatteryLevelTextView.setText(levelText);