add UiModeManager.ENABLE_CAR_MODE_NO_WAKE_LOCK flag for enableCarMode
- When this flag is set, system no longer keeps the display on while in car mode.
bug: 15472822
Change-Id: I277368be5227eaf96213684598f278c39e4c34db
diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java
index f59edc7..4c6b772 100644
--- a/services/core/java/com/android/server/UiModeManagerService.java
+++ b/services/core/java/com/android/server/UiModeManagerService.java
@@ -73,6 +73,7 @@
private boolean mTelevision;
private boolean mWatch;
private boolean mComputedNightMode;
+ private int mCarModeEnableFlags;
int mCurUiMode = 0;
private int mSetUiMode = 0;
@@ -193,7 +194,7 @@
final long ident = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
- setCarModeLocked(true);
+ setCarModeLocked(true, flags);
if (mSystemReady) {
updateLocked(flags, 0);
}
@@ -208,7 +209,7 @@
final long ident = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
- setCarModeLocked(false);
+ setCarModeLocked(false, 0);
if (mSystemReady) {
updateLocked(0, flags);
}
@@ -285,7 +286,8 @@
pw.print(" mLastBroadcastState="); pw.println(mLastBroadcastState);
pw.print(" mNightMode="); pw.print(mNightMode);
pw.print(" mCarModeEnabled="); pw.print(mCarModeEnabled);
- pw.print(" mComputedNightMode="); pw.println(mComputedNightMode);
+ pw.print(" mComputedNightMode="); pw.print(mComputedNightMode);
+ pw.print(" mCarModeEnableFlags="); pw.println(mCarModeEnableFlags);
pw.print(" mCurUiMode=0x"); pw.print(Integer.toHexString(mCurUiMode));
pw.print(" mSetUiMode=0x"); pw.println(Integer.toHexString(mSetUiMode));
pw.print(" mHoldingConfiguration="); pw.print(mHoldingConfiguration);
@@ -311,17 +313,18 @@
return mCarModeEnabled || mDockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
}
- void setCarModeLocked(boolean enabled) {
+ void setCarModeLocked(boolean enabled, int flags) {
if (mCarModeEnabled != enabled) {
mCarModeEnabled = enabled;
}
+ mCarModeEnableFlags = flags;
}
private void updateDockState(int newState) {
synchronized (mLock) {
if (newState != mDockState) {
mDockState = newState;
- setCarModeLocked(mDockState == Intent.EXTRA_DOCK_STATE_CAR);
+ setCarModeLocked(mDockState == Intent.EXTRA_DOCK_STATE_CAR, 0);
if (mSystemReady) {
updateLocked(UiModeManager.ENABLE_CAR_MODE_GO_CAR_HOME, 0);
}
@@ -475,7 +478,8 @@
// keep screen on when charging and in car mode
boolean keepScreenOn = mCharging &&
- ((mCarModeEnabled && mCarModeKeepsScreenOn) ||
+ ((mCarModeEnabled && mCarModeKeepsScreenOn &&
+ (mCarModeEnableFlags & UiModeManager.ENABLE_CAR_MODE_NO_WAKE_LOCK) == 0) ||
(mCurUiMode == Configuration.UI_MODE_TYPE_DESK && mDeskModeKeepsScreenOn));
if (keepScreenOn != mWakeLock.isHeld()) {
if (keepScreenOn) {