diff options
Diffstat (limited to 'packages')
4 files changed, 41 insertions, 15 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java index 4eb6f88..40dcd0d 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -147,6 +147,12 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private int mRingMode; private int mPhoneState; private boolean mKeyguardIsVisible; + + /** + * If true, fingerprint was already authenticated and we don't need to start listening again + * until the Keyguard has been dismissed. + */ + private boolean mFingerprintAlreadyAuthenticated; private boolean mBouncer; private boolean mBootCompleted; private boolean mUserHasAuthenticatedSinceBoot; @@ -373,6 +379,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private void onFingerprintAuthenticated(int userId) { mUserFingerprintAuthenticated.put(userId, true); + + // If fingerprint unlocking is allowed, this event will lead to a Keyguard dismiss or to a + // wake-up (if Keyguard is not showing), so we don't need to listen until Keyguard is + // fully gone. + mFingerprintAlreadyAuthenticated = isUnlockingWithFingerprintAllowed(); for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { @@ -818,6 +829,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { cb.onFinishedGoingToSleep(arg1); } } + mFingerprintAlreadyAuthenticated = false; updateFingerprintListeningState(); } @@ -951,13 +963,14 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } private boolean shouldListenForFingerprint() { - return (mKeyguardIsVisible || !mDeviceInteractive) && !mSwitchingUser; + return (mKeyguardIsVisible || !mDeviceInteractive) && !mSwitchingUser + && !mFingerprintAlreadyAuthenticated; } private void startListeningForFingerprint() { if (DEBUG) Log.v(TAG, "startListeningForFingerprint()"); int userId = ActivityManager.getCurrentUser(); - if (!mFingerprintDetectionRunning && isUnlockWithFingerprintPossible(userId)) { + if (isUnlockWithFingerprintPossible(userId)) { mUserHasAuthenticatedSinceBoot = mTrustManager.hasUserAuthenticatedSinceBoot( ActivityManager.getCurrentUser()); if (mFingerprintCancelSignal != null) { @@ -1249,6 +1262,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { cb.onKeyguardVisibilityChangedRaw(isShowing); } } + if (!isShowing) { + mFingerprintAlreadyAuthenticated = false; + } updateFingerprintListeningState(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index a77b8d1..5be768d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -2388,4 +2388,9 @@ public class NotificationPanelView extends PanelView implements protected boolean isPanelVisibleBecauseOfHeadsUp() { return mHeadsUpManager.hasPinnedHeadsUp() || mHeadsUpAnimatingAway; } + + @Override + public boolean hasOverlappingRendering() { + return !mDozing; + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 82dcf1d..89f0071 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -232,7 +232,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, public static final int FADE_KEYGUARD_START_DELAY = 100; public static final int FADE_KEYGUARD_DURATION = 300; - public static final int FADE_KEYGUARD_DURATION_PULSING = 120; + public static final int FADE_KEYGUARD_DURATION_PULSING = 96; /** Allow some time inbetween the long press for back and recents. */ private static final int LOCK_TO_APP_GESTURE_TOLERENCE = 200; @@ -3441,16 +3441,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, .alpha(0f) .setStartDelay(0) .setDuration(FADE_KEYGUARD_DURATION_PULSING) - .setInterpolator(ScrimController.KEYGUARD_FADE_OUT_INTERPOLATOR) - .withLayer() - .withEndAction(new Runnable() { - @Override - public void run() { - mNotificationPanel.setAlpha(1f); - hideKeyguard(); - } - }) - .start(); + .setInterpolator(ScrimController.KEYGUARD_FADE_OUT_INTERPOLATOR); } /** @@ -3516,6 +3507,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mQSPanel.refreshAllTiles(); } mHandler.removeMessages(MSG_LAUNCH_TRANSITION_TIMEOUT); + mNotificationPanel.setAlpha(1f); return staying; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index 448f16d..7e83f26 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -279,10 +279,15 @@ public class StatusBarKeyguardViewManager { if (mFingerprintUnlockController.getMode() == FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING) { mFingerprintUnlockController.startKeyguardFadingAway(); - mPhoneStatusBar.setKeyguardFadingAway(startTime, 0, 250); + mPhoneStatusBar.setKeyguardFadingAway(startTime, 0, 240); mStatusBarWindowManager.setKeyguardFadingAway(true); mPhoneStatusBar.fadeKeyguardWhilePulsing(); - animateScrimControllerKeyguardFadingOut(0, 250); + animateScrimControllerKeyguardFadingOut(0, 240, new Runnable() { + @Override + public void run() { + mPhoneStatusBar.hideKeyguard(); + } + }); } else { mFingerprintUnlockController.startKeyguardFadingAway(); mPhoneStatusBar.setKeyguardFadingAway(startTime, delay, fadeoutDuration); @@ -316,10 +321,18 @@ public class StatusBarKeyguardViewManager { } private void animateScrimControllerKeyguardFadingOut(long delay, long duration) { + animateScrimControllerKeyguardFadingOut(delay, duration, null /* endRunnable */); + } + + private void animateScrimControllerKeyguardFadingOut(long delay, long duration, + final Runnable endRunnable) { Trace.asyncTraceBegin(Trace.TRACE_TAG_VIEW, "Fading out", 0); mScrimController.animateKeyguardFadingOut(delay, duration, new Runnable() { @Override public void run() { + if (endRunnable != null) { + endRunnable.run(); + } mStatusBarWindowManager.setKeyguardFadingAway(false); mPhoneStatusBar.finishKeyguardFadingAway(); mFingerprintUnlockController.finishKeyguardFadingAway(); |