diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index f3f34a88f17be..63622f15e4c1e 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -377,6 +377,8 @@ public class BatteryStatsImpl extends BatteryStats { int mScreenBrightnessBin = -1; final StopwatchTimer[] mScreenBrightnessTimer = new StopwatchTimer[NUM_SCREEN_BRIGHTNESS_BINS]; + boolean mPretendScreenOff; + boolean mInteractive; StopwatchTimer mInteractiveTimer; @@ -3395,6 +3397,11 @@ public class BatteryStatsImpl extends BatteryStats { mNoAutoReset = enabled; } + public void setPretendScreenOff(boolean pretendScreenOff) { + mPretendScreenOff = pretendScreenOff; + noteScreenStateLocked(pretendScreenOff ? Display.STATE_OFF : Display.STATE_ON); + } + private String mInitialAcquireWakeName; private int mInitialAcquireWakeUid = -1; @@ -3698,6 +3705,7 @@ public class BatteryStatsImpl extends BatteryStats { } public void noteScreenStateLocked(int state) { + state = mPretendScreenOff ? Display.STATE_OFF : state; if (mScreenState != state) { recordDailyStatsIfNeededLocked(true); final int oldState = mScreenState; diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index f1f8bb20652d6..35713025a2f55 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -51,8 +51,8 @@ import android.telephony.SignalStrength; import android.telephony.TelephonyManager; import android.util.IntArray; import android.util.Slog; - import android.util.TimeUtils; + import com.android.internal.annotations.GuardedBy; import com.android.internal.app.IBatteryStats; import com.android.internal.os.BatteryStatsHelper; @@ -1127,6 +1127,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub pw.println(" full-history: include additional detailed events in battery history:"); pw.println(" wake_lock_in, alarms and proc events"); pw.println(" no-auto-reset: don't automatically reset stats when unplugged"); + pw.println(" pretend-screen-off: pretend the screen is off, even if screen state changes"); } private int doEnableOrDisable(PrintWriter pw, int i, String[] args, boolean enable) { @@ -1144,6 +1145,10 @@ public final class BatteryStatsService extends IBatteryStats.Stub synchronized (mStats) { mStats.setNoAutoReset(enable); } + } else if ("pretend-screen-off".equals(args[i])) { + synchronized (mStats) { + mStats.setPretendScreenOff(enable); + } } else { pw.println("Unknown enable/disable option: " + args[i]); dumpHelp(pw);