Loading packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java +4 −3 Original line number Diff line number Diff line Loading @@ -32,9 +32,10 @@ import android.widget.FrameLayout; * - optionally can override dozeTimeTick to adjust views for burn-in mitigation */ abstract class UdfpsAnimationView extends FrameLayout { // mAlpha takes into consideration the status bar expansion amount to fade out icon when // the status bar is expanded private int mAlpha; private boolean mPauseAuth; boolean mPauseAuth; public UdfpsAnimationView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); Loading Loading @@ -75,7 +76,7 @@ abstract class UdfpsAnimationView extends FrameLayout { getDrawable().setAlpha(calculateAlpha()); } protected final int calculateAlpha() { int calculateAlpha() { return mPauseAuth ? mAlpha : 255; } Loading packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java +1 −21 Original line number Diff line number Diff line Loading @@ -16,10 +16,6 @@ package com.android.systemui.biometrics; import static com.android.systemui.statusbar.StatusBarState.FULLSCREEN_USER_SWITCHER; import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; import static com.android.systemui.statusbar.StatusBarState.SHADE_LOCKED; import android.annotation.NonNull; import android.graphics.PointF; import android.graphics.RectF; Loading Loading @@ -68,18 +64,13 @@ abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView> @Override protected void onViewAttached() { mStatusBarStateController.addCallback(mStateListener); mStateListener.onStateChanged(mStatusBarStateController.getState()); mStatusBar.addExpansionChangedListener(mStatusBarExpansionChangedListener); mDumpManger.registerDumpable(getDumpTag(), this); } @Override protected void onViewDetached() { mStatusBarStateController.removeCallback(mStateListener); mStatusBar.removeExpansionChangedListener(mStatusBarExpansionChangedListener); mDumpManger.unregisterDumpable(getDumpTag()); } Loading @@ -106,9 +97,7 @@ abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView> * authentication. */ boolean shouldPauseAuth() { return (mNotificationShadeExpanded && mStatusBarState != KEYGUARD) || mStatusBarState == SHADE_LOCKED || mStatusBarState == FULLSCREEN_USER_SWITCHER; return mNotificationShadeExpanded; } /** Loading Loading @@ -188,13 +177,4 @@ abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView> updatePauseAuth(); } }; private final StatusBarStateController.StateListener mStateListener = new StatusBarStateController.StateListener() { @Override public void onStateChanged(int newState) { mStatusBarState = newState; updatePauseAuth(); } }; } packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java +7 −2 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.doze.DozeReceiver; import com.android.systemui.dump.DumpManager; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; Loading Loading @@ -90,6 +91,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback { @NonNull private final DumpManager mDumpManager; @NonNull private final AuthRippleController mAuthRippleController; @NonNull private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; @NonNull private final KeyguardViewMediator mKeyguardViewMediator; // Currently the UdfpsController supports a single UDFPS sensor. If devices have multiple // sensors, this, in addition to a lot of the code here, will be updated. @VisibleForTesting final FingerprintSensorPropertiesInternal mSensorProps; Loading Loading @@ -310,7 +312,8 @@ public class UdfpsController implements DozeReceiver, HbmCallback { @NonNull StatusBarKeyguardViewManager statusBarKeyguardViewManager, @NonNull DumpManager dumpManager, @NonNull AuthRippleController authRippleController, @NonNull KeyguardUpdateMonitor keyguardUpdateMonitor) { @NonNull KeyguardUpdateMonitor keyguardUpdateMonitor, @NonNull KeyguardViewMediator keyguardViewMediator) { mContext = context; mInflater = inflater; // The fingerprint manager is queried for UDFPS before this class is constructed, so the Loading @@ -324,6 +327,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback { mDumpManager = dumpManager; mAuthRippleController = authRippleController; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardViewMediator = keyguardViewMediator; mSensorProps = findFirstUdfps(); // At least one UDFPS sensor exists Loading Loading @@ -491,7 +495,8 @@ public class UdfpsController implements DozeReceiver, HbmCallback { mKeyguardViewManager, mKeyguardUpdateMonitor, mFgExecutor, mDumpManager mDumpManager, mKeyguardViewMediator ); case IUdfpsOverlayController.REASON_AUTH_BP: // note: empty controller, currently shows no visual affordance Loading packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java +9 −0 Original line number Diff line number Diff line Loading @@ -97,6 +97,11 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { } } @Override int calculateAlpha() { return mPauseAuth ? 0 : 255; } void onDozeAmountChanged(float linear, float eased) { mFingerprintDrawable.onDozeAmountChanged(linear, eased); } Loading Loading @@ -153,6 +158,10 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { return mStatusBarState == StatusBarState.SHADE_LOCKED; } boolean isHome() { return mStatusBarState == StatusBarState.SHADE; } /** * Animates out the bg protection circle behind the fp icon to unhighlight the icon. */ Loading packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java +39 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.biometrics; import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; import android.annotation.NonNull; import android.hardware.biometrics.BiometricSourceType; Loading @@ -24,7 +26,9 @@ import androidx.annotation.Nullable; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.dump.DumpManager; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.util.concurrency.DelayableExecutor; Loading @@ -45,12 +49,15 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud @NonNull private final StatusBarKeyguardViewManager mKeyguardViewManager; @NonNull private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; @NonNull private final DelayableExecutor mExecutor; @NonNull private final KeyguardViewMediator mKeyguardViewMediator; @Nullable private Runnable mCancelRunnable; private boolean mShowBouncer; private boolean mQsExpanded; private boolean mFaceDetectRunning; private boolean mHintShown; private boolean mTransitioningFromHome; private int mStatusBarState; protected UdfpsKeyguardViewController( @NonNull UdfpsKeyguardView view, Loading @@ -59,11 +66,13 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud @NonNull StatusBarKeyguardViewManager statusBarKeyguardViewManager, @NonNull KeyguardUpdateMonitor keyguardUpdateMonitor, @NonNull DelayableExecutor mainDelayableExecutor, @NonNull DumpManager dumpManager) { @NonNull DumpManager dumpManager, @NonNull KeyguardViewMediator keyguardViewMediator) { super(view, statusBarStateController, statusBar, dumpManager); mKeyguardViewManager = statusBarKeyguardViewManager; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mExecutor = mainDelayableExecutor; mKeyguardViewMediator = keyguardViewMediator; } @Override Loading Loading @@ -94,6 +103,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud mStatusBarStateController.removeCallback(mStateListener); mAlternateAuthInterceptor.hideAlternateAuthBouncer(); mKeyguardViewManager.setAlternateAuthInterceptor(null); mTransitioningFromHome = false; if (mCancelRunnable != null) { mCancelRunnable.run(); Loading @@ -106,17 +116,18 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud super.dump(fd, pw, args); pw.println("mShowBouncer=" + mShowBouncer); pw.println("mFaceDetectRunning=" + mFaceDetectRunning); pw.println("mTransitioningFromHomeToKeyguard=" + mTransitioningFromHome); } /** * Overrides non-bouncer show logic in shouldPauseAuth to still auth. */ private void showBouncer(boolean forceShow) { if (mShowBouncer == forceShow) { private void showBouncer(boolean show) { if (mShowBouncer == show) { return; } mShowBouncer = forceShow; mShowBouncer = show; updatePauseAuth(); if (mShowBouncer) { mView.animateUdfpsBouncer(); Loading @@ -128,18 +139,26 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud /** * Returns true if the fingerprint manager is running but we want to temporarily pause * authentication. On the keyguard, we may want to show udfps when the shade * is expanded, so this can be overridden with the forceShow method. * is expanded, so this can be overridden with the showBouncer method. */ public boolean shouldPauseAuth() { if (mShowBouncer) { return false; } if (mStatusBarState != KEYGUARD) { return true; } if (mTransitioningFromHome && mKeyguardViewMediator.isAnimatingScreenOff()) { return true; } if (mQsExpanded) { return true; } return super.shouldPauseAuth(); return false; } private void cancelDelayedHint() { Loading Loading @@ -176,12 +195,25 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud new StatusBarStateController.StateListener() { @Override public void onDozeAmountChanged(float linear, float eased) { mView.onDozeAmountChanged(linear, eased); if (linear != 0) showBouncer(false); mView.onDozeAmountChanged(linear, eased); if (linear == 1f) { // transition has finished mTransitioningFromHome = false; } updatePauseAuth(); } @Override public void onStatePreChange(int oldState, int newState) { mTransitioningFromHome = oldState == StatusBarState.SHADE && newState == StatusBarState.KEYGUARD; updatePauseAuth(); } @Override public void onStateChanged(int statusBarState) { mStatusBarState = statusBarState; mView.setStatusBarState(statusBarState); } }; Loading Loading
packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java +4 −3 Original line number Diff line number Diff line Loading @@ -32,9 +32,10 @@ import android.widget.FrameLayout; * - optionally can override dozeTimeTick to adjust views for burn-in mitigation */ abstract class UdfpsAnimationView extends FrameLayout { // mAlpha takes into consideration the status bar expansion amount to fade out icon when // the status bar is expanded private int mAlpha; private boolean mPauseAuth; boolean mPauseAuth; public UdfpsAnimationView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); Loading Loading @@ -75,7 +76,7 @@ abstract class UdfpsAnimationView extends FrameLayout { getDrawable().setAlpha(calculateAlpha()); } protected final int calculateAlpha() { int calculateAlpha() { return mPauseAuth ? mAlpha : 255; } Loading
packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java +1 −21 Original line number Diff line number Diff line Loading @@ -16,10 +16,6 @@ package com.android.systemui.biometrics; import static com.android.systemui.statusbar.StatusBarState.FULLSCREEN_USER_SWITCHER; import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; import static com.android.systemui.statusbar.StatusBarState.SHADE_LOCKED; import android.annotation.NonNull; import android.graphics.PointF; import android.graphics.RectF; Loading Loading @@ -68,18 +64,13 @@ abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView> @Override protected void onViewAttached() { mStatusBarStateController.addCallback(mStateListener); mStateListener.onStateChanged(mStatusBarStateController.getState()); mStatusBar.addExpansionChangedListener(mStatusBarExpansionChangedListener); mDumpManger.registerDumpable(getDumpTag(), this); } @Override protected void onViewDetached() { mStatusBarStateController.removeCallback(mStateListener); mStatusBar.removeExpansionChangedListener(mStatusBarExpansionChangedListener); mDumpManger.unregisterDumpable(getDumpTag()); } Loading @@ -106,9 +97,7 @@ abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView> * authentication. */ boolean shouldPauseAuth() { return (mNotificationShadeExpanded && mStatusBarState != KEYGUARD) || mStatusBarState == SHADE_LOCKED || mStatusBarState == FULLSCREEN_USER_SWITCHER; return mNotificationShadeExpanded; } /** Loading Loading @@ -188,13 +177,4 @@ abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView> updatePauseAuth(); } }; private final StatusBarStateController.StateListener mStateListener = new StatusBarStateController.StateListener() { @Override public void onStateChanged(int newState) { mStatusBarState = newState; updatePauseAuth(); } }; }
packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java +7 −2 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.doze.DozeReceiver; import com.android.systemui.dump.DumpManager; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; Loading Loading @@ -90,6 +91,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback { @NonNull private final DumpManager mDumpManager; @NonNull private final AuthRippleController mAuthRippleController; @NonNull private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; @NonNull private final KeyguardViewMediator mKeyguardViewMediator; // Currently the UdfpsController supports a single UDFPS sensor. If devices have multiple // sensors, this, in addition to a lot of the code here, will be updated. @VisibleForTesting final FingerprintSensorPropertiesInternal mSensorProps; Loading Loading @@ -310,7 +312,8 @@ public class UdfpsController implements DozeReceiver, HbmCallback { @NonNull StatusBarKeyguardViewManager statusBarKeyguardViewManager, @NonNull DumpManager dumpManager, @NonNull AuthRippleController authRippleController, @NonNull KeyguardUpdateMonitor keyguardUpdateMonitor) { @NonNull KeyguardUpdateMonitor keyguardUpdateMonitor, @NonNull KeyguardViewMediator keyguardViewMediator) { mContext = context; mInflater = inflater; // The fingerprint manager is queried for UDFPS before this class is constructed, so the Loading @@ -324,6 +327,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback { mDumpManager = dumpManager; mAuthRippleController = authRippleController; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardViewMediator = keyguardViewMediator; mSensorProps = findFirstUdfps(); // At least one UDFPS sensor exists Loading Loading @@ -491,7 +495,8 @@ public class UdfpsController implements DozeReceiver, HbmCallback { mKeyguardViewManager, mKeyguardUpdateMonitor, mFgExecutor, mDumpManager mDumpManager, mKeyguardViewMediator ); case IUdfpsOverlayController.REASON_AUTH_BP: // note: empty controller, currently shows no visual affordance Loading
packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java +9 −0 Original line number Diff line number Diff line Loading @@ -97,6 +97,11 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { } } @Override int calculateAlpha() { return mPauseAuth ? 0 : 255; } void onDozeAmountChanged(float linear, float eased) { mFingerprintDrawable.onDozeAmountChanged(linear, eased); } Loading Loading @@ -153,6 +158,10 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { return mStatusBarState == StatusBarState.SHADE_LOCKED; } boolean isHome() { return mStatusBarState == StatusBarState.SHADE; } /** * Animates out the bg protection circle behind the fp icon to unhighlight the icon. */ Loading
packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java +39 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.biometrics; import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; import android.annotation.NonNull; import android.hardware.biometrics.BiometricSourceType; Loading @@ -24,7 +26,9 @@ import androidx.annotation.Nullable; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.dump.DumpManager; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.util.concurrency.DelayableExecutor; Loading @@ -45,12 +49,15 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud @NonNull private final StatusBarKeyguardViewManager mKeyguardViewManager; @NonNull private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; @NonNull private final DelayableExecutor mExecutor; @NonNull private final KeyguardViewMediator mKeyguardViewMediator; @Nullable private Runnable mCancelRunnable; private boolean mShowBouncer; private boolean mQsExpanded; private boolean mFaceDetectRunning; private boolean mHintShown; private boolean mTransitioningFromHome; private int mStatusBarState; protected UdfpsKeyguardViewController( @NonNull UdfpsKeyguardView view, Loading @@ -59,11 +66,13 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud @NonNull StatusBarKeyguardViewManager statusBarKeyguardViewManager, @NonNull KeyguardUpdateMonitor keyguardUpdateMonitor, @NonNull DelayableExecutor mainDelayableExecutor, @NonNull DumpManager dumpManager) { @NonNull DumpManager dumpManager, @NonNull KeyguardViewMediator keyguardViewMediator) { super(view, statusBarStateController, statusBar, dumpManager); mKeyguardViewManager = statusBarKeyguardViewManager; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mExecutor = mainDelayableExecutor; mKeyguardViewMediator = keyguardViewMediator; } @Override Loading Loading @@ -94,6 +103,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud mStatusBarStateController.removeCallback(mStateListener); mAlternateAuthInterceptor.hideAlternateAuthBouncer(); mKeyguardViewManager.setAlternateAuthInterceptor(null); mTransitioningFromHome = false; if (mCancelRunnable != null) { mCancelRunnable.run(); Loading @@ -106,17 +116,18 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud super.dump(fd, pw, args); pw.println("mShowBouncer=" + mShowBouncer); pw.println("mFaceDetectRunning=" + mFaceDetectRunning); pw.println("mTransitioningFromHomeToKeyguard=" + mTransitioningFromHome); } /** * Overrides non-bouncer show logic in shouldPauseAuth to still auth. */ private void showBouncer(boolean forceShow) { if (mShowBouncer == forceShow) { private void showBouncer(boolean show) { if (mShowBouncer == show) { return; } mShowBouncer = forceShow; mShowBouncer = show; updatePauseAuth(); if (mShowBouncer) { mView.animateUdfpsBouncer(); Loading @@ -128,18 +139,26 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud /** * Returns true if the fingerprint manager is running but we want to temporarily pause * authentication. On the keyguard, we may want to show udfps when the shade * is expanded, so this can be overridden with the forceShow method. * is expanded, so this can be overridden with the showBouncer method. */ public boolean shouldPauseAuth() { if (mShowBouncer) { return false; } if (mStatusBarState != KEYGUARD) { return true; } if (mTransitioningFromHome && mKeyguardViewMediator.isAnimatingScreenOff()) { return true; } if (mQsExpanded) { return true; } return super.shouldPauseAuth(); return false; } private void cancelDelayedHint() { Loading Loading @@ -176,12 +195,25 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud new StatusBarStateController.StateListener() { @Override public void onDozeAmountChanged(float linear, float eased) { mView.onDozeAmountChanged(linear, eased); if (linear != 0) showBouncer(false); mView.onDozeAmountChanged(linear, eased); if (linear == 1f) { // transition has finished mTransitioningFromHome = false; } updatePauseAuth(); } @Override public void onStatePreChange(int oldState, int newState) { mTransitioningFromHome = oldState == StatusBarState.SHADE && newState == StatusBarState.KEYGUARD; updatePauseAuth(); } @Override public void onStateChanged(int statusBarState) { mStatusBarState = statusBarState; mView.setStatusBarState(statusBarState); } }; Loading