Loading packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +18 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading Loading @@ -818,6 +829,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { cb.onFinishedGoingToSleep(arg1); } } mFingerprintAlreadyAuthenticated = false; updateFingerprintListeningState(); } Loading Loading @@ -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) { Loading Loading @@ -1249,6 +1262,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { cb.onKeyguardVisibilityChangedRaw(isShowing); } } if (!isShowing) { mFingerprintAlreadyAuthenticated = false; } updateFingerprintListeningState(); } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +5 −0 Original line number Diff line number Diff line Loading @@ -2388,4 +2388,9 @@ public class NotificationPanelView extends PanelView implements protected boolean isPanelVisibleBecauseOfHeadsUp() { return mHeadsUpManager.hasPinnedHeadsUp() || mHeadsUpAnimatingAway; } @Override public boolean hasOverlappingRendering() { return !mDozing; } } packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +3 −11 Original line number Diff line number Diff line Loading @@ -233,7 +233,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; Loading Loading @@ -3478,16 +3478,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); } /** Loading Loading @@ -3553,6 +3544,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mQSPanel.refreshAllTiles(); } mHandler.removeMessages(MSG_LAUNCH_TRANSITION_TIMEOUT); mNotificationPanel.setAlpha(1f); return staying; } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +15 −2 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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(); Loading Loading
packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +18 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading Loading @@ -818,6 +829,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { cb.onFinishedGoingToSleep(arg1); } } mFingerprintAlreadyAuthenticated = false; updateFingerprintListeningState(); } Loading Loading @@ -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) { Loading Loading @@ -1249,6 +1262,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { cb.onKeyguardVisibilityChangedRaw(isShowing); } } if (!isShowing) { mFingerprintAlreadyAuthenticated = false; } updateFingerprintListeningState(); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +5 −0 Original line number Diff line number Diff line Loading @@ -2388,4 +2388,9 @@ public class NotificationPanelView extends PanelView implements protected boolean isPanelVisibleBecauseOfHeadsUp() { return mHeadsUpManager.hasPinnedHeadsUp() || mHeadsUpAnimatingAway; } @Override public boolean hasOverlappingRendering() { return !mDozing; } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +3 −11 Original line number Diff line number Diff line Loading @@ -233,7 +233,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; Loading Loading @@ -3478,16 +3478,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); } /** Loading Loading @@ -3553,6 +3544,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mQSPanel.refreshAllTiles(); } mHandler.removeMessages(MSG_LAUNCH_TRANSITION_TIMEOUT); mNotificationPanel.setAlpha(1f); return staying; } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +15 −2 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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(); Loading