From 126e94e2c2c349d5bb26bae5fb1275aa64ac30c7 Mon Sep 17 00:00:00 2001 From: Beverly Date: Fri, 16 Jul 2021 10:07:51 -0400 Subject: Update kg lock icon logic - don't animate fp => unlock unless udfps was enrolled - show a static unlock icon if the device wasn't previously locked Test: manual - swipe to unlock - face only - fp only - co-ex - removing biometric auth => swipe to unlock Bug: 193878791 Change-Id: I35d393383674acb03f06ea58fb8aabc2a820ad7c --- .../android/keyguard/LockIconViewController.java | 38 +++++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) (limited to 'packages/SystemUI/src/com/android/keyguard/LockIconViewController.java') diff --git a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java index 373d4df146d5..5957be3c271b 100644 --- a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java @@ -93,6 +93,7 @@ public class LockIconViewController extends ViewController impleme @NonNull private final AnimatedVectorDrawable mFpToUnlockIcon; @NonNull private final AnimatedVectorDrawable mLockToUnlockIcon; @NonNull private final Drawable mLockIcon; + @NonNull private final Drawable mUnlockIcon; @NonNull private final CharSequence mUnlockedLabel; @NonNull private final CharSequence mLockedLabel; @Nullable private final Vibrator mVibrator; @@ -148,6 +149,10 @@ public class LockIconViewController extends ViewController impleme mVibrator = vibrator; final Context context = view.getContext(); + mUnlockIcon = mView.getContext().getResources().getDrawable( + R.anim.lock_to_unlock, + mView.getContext().getTheme()); + ((AnimatedVectorDrawable) mUnlockIcon).start(); mLockIcon = mView.getContext().getResources().getDrawable( R.anim.lock_to_unlock, mView.getContext().getTheme()); @@ -227,8 +232,9 @@ public class LockIconViewController extends ViewController impleme return; } - boolean wasShowingFpIcon = mHasUdfps && !mShowUnlockIcon && !mShowLockIcon; + boolean wasShowingFpIcon = mUdfpsEnrolled && !mShowUnlockIcon && !mShowLockIcon; boolean wasShowingLockIcon = mShowLockIcon; + boolean wasShowingUnlockIcon = mShowUnlockIcon; mShowLockIcon = !mCanDismissLockScreen && !mUserUnlockedWithBiometric && isLockScreen() && (!mUdfpsEnrolled || !mRunningFPS); mShowUnlockIcon = mCanDismissLockScreen && isLockScreen(); @@ -239,14 +245,18 @@ public class LockIconViewController extends ViewController impleme mView.setVisibility(View.VISIBLE); mView.setContentDescription(mLockedLabel); } else if (mShowUnlockIcon) { - if (wasShowingFpIcon) { - mView.setImageDrawable(mFpToUnlockIcon); - mFpToUnlockIcon.forceAnimationOnUI(); - mFpToUnlockIcon.start(); - } else if (wasShowingLockIcon) { - mView.setImageDrawable(mLockToUnlockIcon); - mLockToUnlockIcon.forceAnimationOnUI(); - mLockToUnlockIcon.start(); + if (!wasShowingUnlockIcon) { + if (wasShowingFpIcon) { + mView.setImageDrawable(mFpToUnlockIcon); + mFpToUnlockIcon.forceAnimationOnUI(); + mFpToUnlockIcon.start(); + } else if (wasShowingLockIcon) { + mView.setImageDrawable(mLockToUnlockIcon); + mLockToUnlockIcon.forceAnimationOnUI(); + mLockToUnlockIcon.start(); + } else { + mView.setImageDrawable(mUnlockIcon); + } } mView.setVisibility(View.VISIBLE); mView.setContentDescription(mUnlockedLabel); @@ -300,6 +310,7 @@ public class LockIconViewController extends ViewController impleme mFpToUnlockIcon.setTint(color); mLockToUnlockIcon.setTint(color); mLockIcon.setTint(color); + mUnlockIcon.setTint(color); } private void updateConfiguration() { @@ -427,7 +438,16 @@ public class LockIconViewController extends ViewController impleme @Override public void onKeyguardShowingChanged() { + // Reset values in case biometrics were removed (ie: pin/pattern/password => swipe). + // If biometrics were removed, local vars mCanDismissLockScreen and + // mUserUnlockedWithBiometric may not be updated. + mCanDismissLockScreen = mKeyguardStateController.canDismissLockScreen(); updateKeyguardShowing(); + if (mIsKeyguardShowing) { + mUserUnlockedWithBiometric = + mKeyguardUpdateMonitor.getUserUnlockedWithBiometric( + KeyguardUpdateMonitor.getCurrentUser()); + } mUdfpsEnrolled = mKeyguardUpdateMonitor.isUdfpsEnrolled(); updateVisibility(); } -- cgit v1.2.3