diff --git a/services/core/java/com/android/server/BatteryService.java b/services/core/java/com/android/server/BatteryService.java index b676f99eb40a7..55592e23b471f 100644 --- a/services/core/java/com/android/server/BatteryService.java +++ b/services/core/java/com/android/server/BatteryService.java @@ -165,6 +165,7 @@ public final class BatteryService extends SystemService { private int mLastInvalidCharger; private int mLowBatteryWarningLevel; + private int mLastLowBatteryWarningLevel; private int mLowBatteryCloseWarningLevel; private int mShutdownBatteryTemperature; @@ -313,6 +314,7 @@ public final class BatteryService extends SystemService { final ContentResolver resolver = mContext.getContentResolver(); int defWarnLevel = mContext.getResources().getInteger( com.android.internal.R.integer.config_lowBatteryWarningLevel); + mLastLowBatteryWarningLevel = mLowBatteryWarningLevel; mLowBatteryWarningLevel = Settings.Global.getInt(resolver, Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, defWarnLevel); if (mLowBatteryWarningLevel == 0) { @@ -357,7 +359,8 @@ public final class BatteryService extends SystemService { return !plugged && mHealthInfo.batteryStatus != BatteryManager.BATTERY_STATUS_UNKNOWN && mHealthInfo.batteryLevel <= mLowBatteryWarningLevel - && (oldPlugged || mLastBatteryLevel > mLowBatteryWarningLevel); + && (oldPlugged || mLastBatteryLevel > mLowBatteryWarningLevel + || mHealthInfo.batteryLevel > mLastLowBatteryWarningLevel); } private boolean shouldShutdownLocked() {