From 10fb224623eae3a99a4fc68424eb876eb20c3f90 Mon Sep 17 00:00:00 2001 From: John Spurlock Date: Thu, 23 Aug 2012 15:32:28 -0400 Subject: Disable screensavers if below first battery warning level. Don't activate on sleep if below the threshold, and quit any currently running dream when the threshold is reached. Bug:6999949 Change-Id: I961b350d24ee6f95e502228aaa57312b0ffbadc1 --- services/java/com/android/server/BatteryService.java | 5 +++++ .../com/android/server/power/PowerManagerService.java | 15 +++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) (limited to 'services/java/com') diff --git a/services/java/com/android/server/BatteryService.java b/services/java/com/android/server/BatteryService.java index 6ae16a481dcd..4192a9349f40 100644 --- a/services/java/com/android/server/BatteryService.java +++ b/services/java/com/android/server/BatteryService.java @@ -204,6 +204,11 @@ public class BatteryService extends Binder { return mBatteryLevel; } + // true if battery level is below the first warning threshold + public final boolean isBatteryLow() { + return mBatteryPresent && mBatteryLevel <= mLowBatteryWarningLevel; + } + void systemReady() { // check our power situation now that it is safe to display the shutdown dialog. shutdownIfNoPower(); diff --git a/services/java/com/android/server/power/PowerManagerService.java b/services/java/com/android/server/power/PowerManagerService.java index a5cb55a73374..9f2b247d3106 100644 --- a/services/java/com/android/server/power/PowerManagerService.java +++ b/services/java/com/android/server/power/PowerManagerService.java @@ -1137,7 +1137,7 @@ public final class PowerManagerService extends IPowerManager.Stub */ private void updateDreamLocked(int dirty) { if ((dirty & (DIRTY_WAKEFULNESS | DIRTY_SETTINGS - | DIRTY_IS_POWERED | DIRTY_STAY_ON)) != 0) { + | DIRTY_IS_POWERED | DIRTY_STAY_ON | DIRTY_BATTERY_STATE)) != 0) { scheduleSandmanLocked(); } } @@ -1163,13 +1163,13 @@ public final class PowerManagerService extends IPowerManager.Stub boolean startDreaming = false; synchronized (mLock) { mSandmanScheduled = false; - + boolean canDream = canDreamLocked(); if (DEBUG_SPEW) { - Log.d(TAG, "handleSandman: canDream=" + canDreamLocked() + Log.d(TAG, "handleSandman: canDream=" + canDream + ", mWakefulness=" + wakefulnessToString(mWakefulness)); } - if (canDreamLocked() && mWakefulness == WAKEFULNESS_NAPPING) { + if (canDream && mWakefulness == WAKEFULNESS_NAPPING) { startDreaming = true; } } @@ -1253,8 +1253,11 @@ public final class PowerManagerService extends IPowerManager.Stub * assuming there has been no recent user activity and no wake locks are held. */ private boolean canDreamLocked() { - return mIsPowered && mDreamsSupportedConfig - && mDreamsEnabledSetting && mDreamsActivateOnSleepSetting; + return mIsPowered + && mDreamsSupportedConfig + && mDreamsEnabledSetting + && mDreamsActivateOnSleepSetting + && !mBatteryService.isBatteryLow(); } /** -- cgit v1.2.3-59-g8ed1b