summaryrefslogtreecommitdiffstats
path: root/policy
diff options
context:
space:
mode:
authorBryce Lee <brycelee@google.com>2014-10-21 15:55:55 -0700
committerBryce Lee <brycelee@google.com>2014-10-21 15:55:55 -0700
commit584a44517950204a04ef01345be70b33d8ba43f9 (patch)
tree064810ffab925197bac2fb8aae2f1df03df0b5d5 /policy
parente463bc388e7f5d83f864b320dde400e390ef5817 (diff)
downloadframeworks_base-584a44517950204a04ef01345be70b33d8ba43f9.zip
frameworks_base-584a44517950204a04ef01345be70b33d8ba43f9.tar.gz
frameworks_base-584a44517950204a04ef01345be70b33d8ba43f9.tar.bz2
[Theater Mode] framework implementation through global setting
Bug: 17684570 Change-Id: I64a9c9c0620049cdfcca0150648fa201281f7178
Diffstat (limited to 'policy')
-rw-r--r--policy/src/com/android/internal/policy/impl/PhoneWindowManager.java51
1 files changed, 45 insertions, 6 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 99d5848..1882d56 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -503,6 +503,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// What we do when the user double-taps on home
private int mDoubleTapOnHomeBehavior;
+ // Allowed theater mode wake actions
+ private boolean mAllowTheaterModeWakeFromKey;
+ private boolean mAllowTheaterModeWakeFromPowerKey;
+ private boolean mAllowTheaterModeWakeFromMotion;
+ private boolean mAllowTheaterModeWakeFromCameraLens;
+ private boolean mAllowTheaterModeWakeFromLidSwitch;
+ private boolean mAllowTheaterModeWakeFromWakeGesture;
+
// Screenshot trigger states
// Time to volume and power must be pressed within this interval of each other.
private static final long SCREENSHOT_CHORD_DEBOUNCE_DELAY_MILLIS = 150;
@@ -656,7 +664,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
synchronized (mLock) {
if (shouldEnableWakeGestureLp()) {
performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false);
- mPowerManager.wakeUp(SystemClock.uptimeMillis());
+ wakeUp(SystemClock.uptimeMillis(), mAllowTheaterModeWakeFromWakeGesture);
}
}
}
@@ -1022,6 +1030,21 @@ public class PhoneWindowManager implements WindowManagerPolicy {
com.android.internal.R.bool.config_lidControlsSleep);
mTranslucentDecorEnabled = mContext.getResources().getBoolean(
com.android.internal.R.bool.config_enableTranslucentDecor);
+
+ mAllowTheaterModeWakeFromKey = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_allowTheaterModeWakeFromKey);
+ mAllowTheaterModeWakeFromPowerKey = mAllowTheaterModeWakeFromKey
+ || mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_allowTheaterModeWakeFromPowerKey);
+ mAllowTheaterModeWakeFromMotion = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_allowTheaterModeWakeFromMotion);
+ mAllowTheaterModeWakeFromCameraLens = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_allowTheaterModeWakeFromCameraLens);
+ mAllowTheaterModeWakeFromLidSwitch = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_allowTheaterModeWakeFromLidSwitch);
+ mAllowTheaterModeWakeFromWakeGesture = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_allowTheaterModeWakeFromGesture);
+
readConfigurationDependentBehaviors();
mAccessibilityManager = (AccessibilityManager) context.getSystemService(
@@ -4071,7 +4094,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
updateRotation(true);
if (lidOpen) {
- mPowerManager.wakeUp(SystemClock.uptimeMillis());
+ wakeUp(SystemClock.uptimeMillis(), mAllowTheaterModeWakeFromLidSwitch);
} else if (!mLidControlsSleep) {
mPowerManager.userActivity(SystemClock.uptimeMillis(), false);
}
@@ -4093,7 +4116,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
} else {
intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
}
- mPowerManager.wakeUp(whenNanos / 1000000);
+ wakeUp(whenNanos / 1000000, mAllowTheaterModeWakeFromCameraLens);
mContext.startActivityAsUser(intent, UserHandle.CURRENT_OR_SELF);
}
mCameraLensCoverState = lensCoverState;
@@ -4271,7 +4294,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// key processing.
if (mGlobalKeyManager.shouldHandleGlobalKey(keyCode, event)) {
if (isWakeKey) {
- mPowerManager.wakeUp(event.getEventTime());
+ wakeUp(event.getEventTime(), keyCode == KeyEvent.KEYCODE_POWER
+ ? mAllowTheaterModeWakeFromPowerKey : mAllowTheaterModeWakeFromKey);
}
return result;
}
@@ -4520,8 +4544,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
if (isWakeKey) {
- mPowerManager.wakeUp(event.getEventTime());
+ wakeUp(event.getEventTime(), keyCode == KeyEvent.KEYCODE_POWER
+ ? mAllowTheaterModeWakeFromPowerKey : mAllowTheaterModeWakeFromKey);
}
+
return result;
}
@@ -4564,7 +4590,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
@Override
public int interceptMotionBeforeQueueingNonInteractive(long whenNanos, int policyFlags) {
if ((policyFlags & FLAG_WAKE) != 0) {
- mPowerManager.wakeUp(whenNanos / 1000000);
+ wakeUp(whenNanos / 1000000, mAllowTheaterModeWakeFromMotion);
return 0;
}
if (shouldDispatchInputWhenNonInteractive()) {
@@ -4742,6 +4768,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
}
+ private void wakeUp(long wakeTime, boolean wakeInTheaterMode) {
+ if (!wakeInTheaterMode && isTheaterModeEnabled()) {
+ return;
+ }
+
+ mPowerManager.wakeUp(wakeTime);
+ }
+
// Called on the PowerManager's Notifier thread.
@Override
public void wakingUp() {
@@ -5620,6 +5654,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
ringTone.play();
}
+ private boolean isTheaterModeEnabled() {
+ return Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.THEATER_MODE_ON, 0) == 1;
+ }
+
private boolean isGlobalAccessibilityGestureEnabled() {
return Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, 0) == 1;