diff --git a/packages/SystemUI/res/layout/super_status_bar.xml b/packages/SystemUI/res/layout/super_status_bar.xml index 4cf5f850285ec..a91493003bb54 100644 --- a/packages/SystemUI/res/layout/super_status_bar.xml +++ b/packages/SystemUI/res/layout/super_status_bar.xml @@ -69,7 +69,7 @@ android:layout_height="match_parent" android:importantForAccessibility="no" sysui:ignoreRightInset="true" - /> + /> update(true /* forceUpdate */); private final DockManager.DockEventListener mDockEventListener = @@ -277,7 +278,8 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange mLastBouncerVisible = mBouncerVisible; } - boolean invisible = mDozing && (!mPulsing || mDocked); + boolean onAodNotPulsingOrDocked = mDozing && (!mPulsing || mDocked); + boolean invisible = onAodNotPulsingOrDocked || mWakeAndUnlockRunning; setVisibility(invisible ? INVISIBLE : VISIBLE); updateClickability(); } @@ -450,4 +452,23 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange public void onUnlockMethodStateChanged() { update(); } + + /** + * We need to hide the lock whenever there's a fingerprint unlock, otherwise you'll see the + * icon on top of the black front scrim. + */ + public void onBiometricAuthModeChanged(boolean wakeAndUnlock) { + if (wakeAndUnlock) { + mWakeAndUnlockRunning = true; + } + update(); + } + + /** + * Triggered after the unlock animation is over and the user is looking at launcher. + */ + public void onKeyguardFadedAway() { + mWakeAndUnlockRunning = false; + update(); + } } 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 b4b4235909d91..17f0d5a790347 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -538,6 +538,7 @@ public class StatusBar extends SystemUI implements DemoMode, } if (mKeyguardMonitor.isKeyguardFadingAway()) { mStatusBarKeyguardViewManager.onKeyguardFadedAway(); + mStatusBarWindow.onKeyguardFadedAway(); } } @@ -3798,6 +3799,7 @@ public class StatusBar extends SystemUI implements DemoMode, public void notifyBiometricAuthModeChanged() { updateDozing(); updateScrimController(); + mStatusBarWindow.onBiometricAuthModeChanged(mBiometricUnlockController.isWakeAndUnlock()); } @VisibleForTesting diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java index 9f538bb3fca47..0b83b697e53d9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java @@ -265,6 +265,21 @@ public class StatusBarWindowView extends FrameLayout { mLockIcon.setPulsing(pulsing); } + /** + * Called when the biometric authentication mode changes. + * @param wakeAndUnlock If the type is {@link BiometricUnlockController#isWakeAndUnlock()} + */ + public void onBiometricAuthModeChanged(boolean wakeAndUnlock) { + mLockIcon.onBiometricAuthModeChanged(wakeAndUnlock); + } + + /** + * Called after finished unlocking and the status bar window is already collapsed. + */ + public void onKeyguardFadedAway() { + mLockIcon.onKeyguardFadedAway(); + } + public void setStatusBarView(PhoneStatusBarView statusBarView) { mStatusBarView = statusBarView; }