diff options
| author | 2021-09-02 19:33:53 +0000 | |
|---|---|---|
| committer | 2021-09-03 22:18:35 +0000 | |
| commit | 6dbfb1d8979e0944e4b9f6336c8c8d420e041fc1 (patch) | |
| tree | e85504583a57023953d6224d8dc5dd9a8709c3cf | |
| parent | 1cf6b4ea68595b7341288a6ae002187a3559f738 (diff) | |
Merge "Udfps enrollment now focuses on fingerprint region" into sc-dev am: f375efdd7b
Bug: 195614793
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15718086
Change-Id: I5c2865cc4fc00b4c56dce2a94a3a55d187d5f731
Merged-In: I07273033599a02e31d97256a3de169b1e1152e54
5 files changed, 46 insertions, 35 deletions
diff --git a/packages/SystemUI/res/layout/udfps_enroll_view.xml b/packages/SystemUI/res/layout/udfps_enroll_view.xml index f1ff6d669256..e41a632fa70a 100644 --- a/packages/SystemUI/res/layout/udfps_enroll_view.xml +++ b/packages/SystemUI/res/layout/udfps_enroll_view.xml @@ -20,10 +20,23 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + <!-- The layout height/width are placeholders, which will be overwritten by + FingerprintSensorPropertiesInternal. --> + <View + android:id="@+id/udfps_enroll_accessibility_view" + android:layout_gravity="center" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:contentDescription="@string/accessibility_fingerprint_label"/> + + <ImageView + android:id="@+id/udfps_enroll_animation_fp_progress_view" + android:layout_width="match_parent" + android:layout_height="match_parent"/> + <!-- Fingerprint --> <ImageView android:id="@+id/udfps_enroll_animation_fp_view" android:layout_width="match_parent" - android:layout_height="match_parent" - android:contentDescription="@string/accessibility_fingerprint_label"/> + android:layout_height="match_parent"/> </com.android.systemui.biometrics.UdfpsEnrollView> diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java index f22483aefe1e..e38f9f08efdc 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java @@ -769,6 +769,7 @@ public class UdfpsController implements DozeReceiver { UdfpsEnrollView enrollView = (UdfpsEnrollView) mInflater.inflate( R.layout.udfps_enroll_view, null); mView.addView(enrollView); + enrollView.updateSensorLocation(mSensorProps); return new UdfpsEnrollViewController( enrollView, mServerRequest.mEnrollHelper, diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java index b5273abd868d..d4077563cfea 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java @@ -43,7 +43,6 @@ public class UdfpsEnrollDrawable extends UdfpsDrawable { // 1 + SCALE_MAX is the maximum that the moving target will animate to private static final float SCALE_MAX = 0.25f; - @NonNull private final UdfpsEnrollProgressBarDrawable mProgressDrawable; @NonNull private final Drawable mMovingTargetFpIcon; @NonNull private final Paint mSensorOutlinePaint; @NonNull private final Paint mBlueFill; @@ -62,7 +61,6 @@ public class UdfpsEnrollDrawable extends UdfpsDrawable { UdfpsEnrollDrawable(@NonNull Context context) { super(context); - mProgressDrawable = new UdfpsEnrollProgressBarDrawable(context, this); mSensorOutlinePaint = new Paint(0 /* flags */); mSensorOutlinePaint.setAntiAlias(true); @@ -100,8 +98,6 @@ public class UdfpsEnrollDrawable extends UdfpsDrawable { } void onEnrollmentProgress(int remaining, int totalSteps) { - mProgressDrawable.setEnrollmentProgress(remaining, totalSteps); - if (mEnrollHelper.isCenterEnrollmentComplete()) { if (mAnimatorSet != null && mAnimatorSet.isRunning()) { mAnimatorSet.end(); @@ -139,18 +135,8 @@ public class UdfpsEnrollDrawable extends UdfpsDrawable { } } - void onLastStepAcquired() { - mProgressDrawable.onLastStepAcquired(); - } - - void onEnrollmentHelp() { - mProgressDrawable.onEnrollmentHelp(); - } - @Override public void draw(@NonNull Canvas canvas) { - mProgressDrawable.draw(canvas); - if (isIlluminationShowing()) { return; } @@ -179,11 +165,6 @@ public class UdfpsEnrollDrawable extends UdfpsDrawable { } @Override - public void onBoundsChange(@NonNull Rect rect) { - mProgressDrawable.setBounds(rect); - } - - @Override public void setAlpha(int alpha) { super.setAlpha(alpha); mSensorOutlinePaint.setAlpha(alpha); diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java index 9c486b9ac1b4..373d17c8ef66 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java @@ -43,7 +43,6 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable { private static final float PROGRESS_BAR_THICKNESS_DP = 12; @NonNull private final Context mContext; - @NonNull private final UdfpsEnrollDrawable mParent; @NonNull private final Paint mBackgroundCirclePaint; @NonNull private final Paint mProgressPaint; @@ -57,10 +56,8 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable { private int mRotation; // After last step, rotate the progress bar once private boolean mLastStepAcquired; - public UdfpsEnrollProgressBarDrawable(@NonNull Context context, - @NonNull UdfpsEnrollDrawable parent) { + public UdfpsEnrollProgressBarDrawable(@NonNull Context context) { mContext = context; - mParent = parent; mShortAnimationDuration = context.getResources() .getInteger(com.android.internal.R.integer.config_shortAnimTime); @@ -115,7 +112,7 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable { rotationAnimator.addUpdateListener(animation -> { Log.d(TAG, "Rotation: " + mRotation); mRotation = (int) animation.getAnimatedValue(); - mParent.invalidateSelf(); + invalidateSelf(); }); rotationAnimator.start(); } @@ -128,11 +125,7 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable { mProgressAnimator.setDuration(animationDuration); mProgressAnimator.addUpdateListener(animation -> { mProgress = (float) animation.getAnimatedValue(); - // Use the parent to invalidate, since it's the one that's attached as the view's - // drawable and has its callback set automatically. Invalidating via - // `this.invalidateSelf` actually does not invoke draw(), since this drawable's callback - // is not really set. - mParent.invalidateSelf(); + invalidateSelf(); }); mProgressAnimator.start(); } @@ -178,7 +171,6 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable { animator.setDuration(mShortAnimationDuration); animator.addUpdateListener(animation -> { mProgressPaint.setColor((int) animation.getAnimatedValue()); - mParent.invalidateSelf(); }); return animator; } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java index 56d5b317029f..d9edef48b3d4 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java @@ -17,9 +17,12 @@ package com.android.systemui.biometrics; import android.content.Context; +import android.hardware.fingerprint.FingerprintSensorPropertiesInternal; import android.os.Handler; import android.os.Looper; import android.util.AttributeSet; +import android.view.View; +import android.view.ViewGroup; import android.widget.ImageView; import androidx.annotation.NonNull; @@ -32,20 +35,25 @@ import com.android.systemui.R; */ public class UdfpsEnrollView extends UdfpsAnimationView { @NonNull private final UdfpsEnrollDrawable mFingerprintDrawable; + @NonNull private final UdfpsEnrollProgressBarDrawable mFingerprintProgressDrawable; @NonNull private final Handler mHandler; @NonNull private ImageView mFingerprintView; + @NonNull private ImageView mFingerprintProgressView; public UdfpsEnrollView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); mFingerprintDrawable = new UdfpsEnrollDrawable(mContext); + mFingerprintProgressDrawable = new UdfpsEnrollProgressBarDrawable(context); mHandler = new Handler(Looper.getMainLooper()); } @Override protected void onFinishInflate() { mFingerprintView = findViewById(R.id.udfps_enroll_animation_fp_view); + mFingerprintProgressView = findViewById(R.id.udfps_enroll_animation_fp_progress_view); mFingerprintView.setImageDrawable(mFingerprintDrawable); + mFingerprintProgressView.setImageDrawable(mFingerprintProgressDrawable); } @Override @@ -53,19 +61,35 @@ public class UdfpsEnrollView extends UdfpsAnimationView { return mFingerprintDrawable; } + void updateSensorLocation(@NonNull FingerprintSensorPropertiesInternal sensorProps) { + View fingerprintAccessibilityView = findViewById(R.id.udfps_enroll_accessibility_view); + final int sensorHeight = sensorProps.sensorRadius * 2; + final int sensorWidth = sensorHeight; + ViewGroup.LayoutParams params = fingerprintAccessibilityView.getLayoutParams(); + params.width = sensorWidth; + params.height = sensorHeight; + fingerprintAccessibilityView.setLayoutParams(params); + fingerprintAccessibilityView.requestLayout(); + } + void setEnrollHelper(UdfpsEnrollHelper enrollHelper) { mFingerprintDrawable.setEnrollHelper(enrollHelper); } void onEnrollmentProgress(int remaining, int totalSteps) { - mHandler.post(() -> mFingerprintDrawable.onEnrollmentProgress(remaining, totalSteps)); + mHandler.post(() -> { + mFingerprintProgressDrawable.setEnrollmentProgress(remaining, totalSteps); + mFingerprintDrawable.onEnrollmentProgress(remaining, totalSteps); + }); } void onLastStepAcquired() { - mHandler.post(mFingerprintDrawable::onLastStepAcquired); + mHandler.post(() -> { + mFingerprintProgressDrawable.onLastStepAcquired(); + }); } void onEnrollmentHelp() { - mHandler.post(mFingerprintDrawable::onEnrollmentHelp); + mHandler.post(mFingerprintProgressDrawable::onEnrollmentHelp); } } |