summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--policy/src/com/android/internal/policy/impl/LockScreen.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/policy/src/com/android/internal/policy/impl/LockScreen.java b/policy/src/com/android/internal/policy/impl/LockScreen.java
index c2fbbbc7854..5c1514af489 100644
--- a/policy/src/com/android/internal/policy/impl/LockScreen.java
+++ b/policy/src/com/android/internal/policy/impl/LockScreen.java
@@ -95,6 +95,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen {
private boolean mSilentMode;
private AudioManager mAudioManager;
private boolean mEnableMenuKeyInLockScreen;
+ private boolean mUnlockKeyDown = false;
private KeyguardStatusViewManager mStatusViewManager;
private UnlockWidgetCommonMethods mUnlockWidgetMethods;
@@ -736,6 +737,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen {
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
+ mUnlockKeyDown = true;
if (keyCode == KeyEvent.KEYCODE_BACK
|| keyCode == KeyEvent.KEYCODE_HOME
|| keyCode == KeyEvent.KEYCODE_MENU) {
@@ -747,9 +749,15 @@ class LockScreen extends LinearLayout implements KeyguardScreen {
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
- if ((keyCode == KeyEvent.KEYCODE_MENU && mEnableMenuKeyInLockScreen) ||
- (keyCode == KeyEvent.KEYCODE_HOME && mHomeUnlockScreen)) {
- mCallback.goToUnlockScreen();
+ int flags = event.getFlags();
+ // make sure the keydown is from a screen on state
+ if (mUnlockKeyDown) {
+ mUnlockKeyDown = false;
+ boolean mNotLongPress = (flags & KeyEvent.FLAG_CANCELED_LONG_PRESS) == 0;
+ if (mNotLongPress && ((keyCode == KeyEvent.KEYCODE_MENU && mEnableMenuKeyInLockScreen) ||
+ (keyCode == KeyEvent.KEYCODE_HOME && mHomeUnlockScreen))) {
+ mCallback.goToUnlockScreen();
+ }
}
return false;
}