diff options
author | blk_jack <jcorcoran+github@gmail.com> | 2012-11-03 22:06:18 -0400 |
---|---|---|
committer | Gerrit Code Review <gerrit@review.cyanogenmod.com> | 2012-11-12 10:33:13 -0800 |
commit | 2a572ee7587cb0b686871e95567313aa8bc8bfd5 (patch) | |
tree | 53277adb17d2dfe85431eb84cccd0973b6c86743 | |
parent | d4eacbe70db0c7cdf696b324927b353518d5b0d0 (diff) | |
download | android_frameworks_base-jellybean-stable.tar.gz android_frameworks_base-jellybean-stable.tar.bz2 android_frameworks_base-jellybean-stable.zip |
Fix home/menu unlock with longpress hardware key actionsjellybean-stable
Also fixes issue where home ACTION_DOWN was waking and ACTION_UP was unlocking the device in a single press.
Patchset 4: mUnlockKeyDown reset properly
Change-Id: Ib4408070fc207c8e2b4230540a551bfed718787d
-rw-r--r-- | policy/src/com/android/internal/policy/impl/LockScreen.java | 14 |
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; } |