diff options
6 files changed, 41 insertions, 9 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java index 6a0d6e1954ab..930f57efd2a7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java @@ -571,6 +571,13 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback { } /** + * Successful authentication with fingerprint, face, or iris when the lockscreen fades away + */ + public boolean isUnlockFading() { + return mMode == MODE_UNLOCK_FADING; + } + + /** * Translates biometric source type for logging purpose. */ private int toSubtype(BiometricSourceType biometricSourceType) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt index c88b22bbbced..0aec2b12fa92 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt @@ -167,4 +167,8 @@ class KeyguardBypassController { pw.print(" qSExpanded: "); pw.println(qSExpanded) pw.print(" bouncerShowing: "); pw.println(bouncerShowing) } + + companion object { + const val BYPASS_PANEL_FADE_DURATION = 67 + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java index 3f38c049a977..1d67a1f247bd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -932,6 +932,12 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo } } + public void setUnlockIsFading(boolean unlockFading) { + for (ScrimState state : ScrimState.values()) { + state.setUnlockIsFading(unlockFading); + } + } + public void setLaunchingAffordanceWithPreview(boolean launchingAffordanceWithPreview) { for (ScrimState state : ScrimState.values()) { state.setLaunchingAffordanceWithPreview(launchingAffordanceWithPreview); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java index d152ecd8b930..763e0d70469b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java @@ -147,7 +147,9 @@ public enum ScrimState { public void prepare(ScrimState previousState) { mCurrentBehindAlpha = 0; mCurrentInFrontAlpha = 0; - mAnimationDuration = StatusBar.FADE_KEYGUARD_DURATION; + mAnimationDuration = mUnlockIsFading + ? KeyguardBypassController.BYPASS_PANEL_FADE_DURATION + : StatusBar.FADE_KEYGUARD_DURATION; mAnimateChange = !mLaunchingAffordanceWithPreview; if (previousState == ScrimState.AOD) { @@ -198,6 +200,7 @@ public enum ScrimState { boolean mHasBackdrop; boolean mLaunchingAffordanceWithPreview; boolean mWakeLockScreenSensorActive; + boolean mUnlockIsFading; ScrimState(int index) { mIndex = index; @@ -285,4 +288,8 @@ public enum ScrimState { public void setWakeLockScreenSensorActive(boolean active) { mWakeLockScreenSensorActive = active; } + + public void setUnlockIsFading(boolean unlockIsFading) { + mUnlockIsFading = unlockIsFading; + } }
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index fb8eca15d7c9..1572c073ffdc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -3840,6 +3840,7 @@ public class StatusBar extends SystemUI implements DemoMode, public void notifyBiometricAuthModeChanged() { updateDozing(); + mScrimController.setUnlockIsFading(mBiometricUnlockController.isUnlockFading()); updateScrimController(); mStatusBarWindow.onBiometricAuthModeChanged(mBiometricUnlockController.isWakeAndUnlock(), mBiometricUnlockController.isBiometricUnlock()); @@ -3851,7 +3852,8 @@ public class StatusBar extends SystemUI implements DemoMode, // We don't want to end up in KEYGUARD state when we're unlocking with // fingerprint from doze. We should cross fade directly from black. - boolean wakeAndUnlocking = mBiometricUnlockController.isWakeAndUnlock(); + boolean unlocking = mBiometricUnlockController.isWakeAndUnlock() + || mKeyguardMonitor.isKeyguardFadingAway(); // Do not animate the scrim expansion when triggered by the fingerprint sensor. mScrimController.setExpansionAffectsAlpha( @@ -3876,9 +3878,9 @@ public class StatusBar extends SystemUI implements DemoMode, } else if (isPulsing()) { mScrimController.transitionTo(ScrimState.PULSING, mDozeScrimController.getScrimCallback()); - } else if (mDozing && !wakeAndUnlocking) { + } else if (mDozing && !unlocking) { mScrimController.transitionTo(ScrimState.AOD); - } else if (mIsKeyguard && !wakeAndUnlocking) { + } else if (mIsKeyguard && !unlocking) { mScrimController.transitionTo(ScrimState.KEYGUARD); } else if (mBubbleController.isStackExpanded()) { mScrimController.transitionTo(ScrimState.BUBBLE_EXPANDED); 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 da85039039f2..1321784c978a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -84,7 +84,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb // make everything a bit slower to bridge a gap until the user is unlocked and home screen has // dranw its first frame. private static final long KEYGUARD_DISMISS_DURATION_LOCKED = 2000; - private static final long BYPASS_PANEL_FADE_DURATION = 67; private static String TAG = "StatusBarKeyguardViewManager"; @@ -269,7 +268,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb boolean keyguardWithoutQs = mStatusBarStateController.getState() == StatusBarState.KEYGUARD && !mNotificationPanelView.isQsExpanded(); boolean lockVisible = (mBouncer.isShowing() || keyguardWithoutQs) - && !mBouncer.isAnimatingAway(); + && !mBouncer.isAnimatingAway() && !mKeyguardMonitor.isKeyguardFadingAway(); if (mLastLockVisible != lockVisible) { mLastLockVisible = lockVisible; @@ -278,8 +277,14 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb AppearAnimationUtils.DEFAULT_APPEAR_DURATION /* duration */, 0 /* delay */); } else { + final long duration; + if (needsBypassFading()) { + duration = KeyguardBypassController.BYPASS_PANEL_FADE_DURATION; + } else { + duration = AppearAnimationUtils.DEFAULT_APPEAR_DURATION / 2; + } CrossFadeHelper.fadeOut(mLockIconContainer, - AppearAnimationUtils.DEFAULT_APPEAR_DURATION / 2 /* duration */, + duration /* duration */, 0 /* delay */, null /* runnable */); } } @@ -566,7 +571,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb if (needsBypassFading()) { ViewGroupFadeHelper.fadeOutAllChildrenExcept(mNotificationPanelView, mNotificationContainer, - BYPASS_PANEL_FADE_DURATION, + KeyguardBypassController.BYPASS_PANEL_FADE_DURATION, () -> { mStatusBar.hideKeyguard(); onKeyguardFadedAway(); @@ -582,7 +587,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb if (needsBypassFading()) { ViewGroupFadeHelper.fadeOutAllChildrenExcept(mNotificationPanelView, mNotificationContainer, - BYPASS_PANEL_FADE_DURATION, + KeyguardBypassController.BYPASS_PANEL_FADE_DURATION, () -> { mStatusBar.hideKeyguard(); }); @@ -601,6 +606,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mBiometricUnlockController.finishKeyguardFadingAway(); } } + updateLockIcon(); updateStates(); mStatusBarWindowController.setKeyguardShowing(false); mViewMediatorCallback.keyguardGone(); |