summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2009-11-28 20:58:22 -0500
committerMike Lockwood <lockwood@android.com>2009-11-28 20:58:22 -0500
commitb64c72dfb3e635093b00690454cb905ffff68ab9 (patch)
tree1da8fecd8ead4cccf7d10f802921670d48873b06
parent760d266a4195db5f3f3dee94be9e0c020cf4051f (diff)
downloadbase-b64c72dfb3e635093b00690454cb905ffff68ab9.tar.gz
Fix bug 2290852: Screen wakes up in my pocket while listening to music
When the screen is off keyguard is open but hidden by another activity make sure that non-waking events like volume key or track ball press do not turn the screen back on. Change-Id: Ie6b191360b903b54388a6f65680ccc3264a51dd8 Signed-off-by: Mike Lockwood <lockwood@android.com>
-rwxr-xr-xphone/com/android/internal/policy/impl/PhoneWindowManager.java14
1 files changed, 10 insertions, 4 deletions
diff --git a/phone/com/android/internal/policy/impl/PhoneWindowManager.java b/phone/com/android/internal/policy/impl/PhoneWindowManager.java
index 2143f52..2f9faae 100755
--- a/phone/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/phone/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -1620,14 +1620,20 @@ public class PhoneWindowManager implements WindowManagerPolicy {
public int interceptKeyTq(RawInputEvent event, boolean screenIsOn) {
int result = ACTION_PASS_TO_USER;
final boolean isWakeKey = isWakeKeyTq(event);
- final boolean keyguardShowing = keyguardIsShowingTq();
+ // If screen is off then we treat the case where the keyguard is open but hidden
+ // the same as if it were open and in front.
+ // This will prevent any keys other than the power button from waking the screen
+ // when the keyguard is hidden by another activity.
+ final boolean keyguardActive = (screenIsOn ?
+ mKeyguardMediator.isShowingAndNotHidden() :
+ mKeyguardMediator.isShowing());
if (false) {
Log.d(TAG, "interceptKeyTq event=" + event + " keycode=" + event.keycode
- + " screenIsOn=" + screenIsOn + " keyguardShowing=" + keyguardShowing);
+ + " screenIsOn=" + screenIsOn + " keyguardActive=" + keyguardActive);
}
- if (keyguardShowing) {
+ if (keyguardActive) {
if (screenIsOn) {
// when the screen is on, always give the event to the keyguard
result |= ACTION_PASS_TO_USER;
@@ -1721,7 +1727,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mShouldTurnOffOnKeyUp = false;
boolean gohome = (mEndcallBehavior & ENDCALL_HOME) != 0;
boolean sleeps = (mEndcallBehavior & ENDCALL_SLEEPS) != 0;
- if (keyguardShowing
+ if (keyguardActive
|| (sleeps && !gohome)
|| (gohome && !goHome() && sleeps)) {
// they must already be on the keyguad or home screen,