Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6dbfb1d8 authored by Joshua Mccloskey's avatar Joshua Mccloskey
Browse files

Merge "Udfps enrollment now focuses on fingerprint region" into sc-dev am: f375efdd

Bug: 195614793

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15718086

Change-Id: I5c2865cc4fc00b4c56dce2a94a3a55d187d5f731
Merged-In: I07273033599a02e31d97256a3de169b1e1152e54
parent 1cf6b4ea
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -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>
+1 −0
Original line number Diff line number Diff line
@@ -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,
+0 −19
Original line number Diff line number Diff line
@@ -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;
        }
@@ -178,11 +164,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);
+3 −11
Original line number Diff line number Diff line
@@ -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;
    }
+27 −3
Original line number Diff line number Diff line
@@ -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);
    }
}