Start udfps enroll after activity animates in

1) Do not request enrollment until activity animation is complete
2) Do not show fingerprint icon until activity animation is complete

Bug: 171353506
Test: manual
Change-Id: I7cdf5fc4888e35c0a7ba38ea622ae9f3fe1a3abf
This commit is contained in:
Kevin Chyn
2020-12-01 17:29:47 -08:00
parent b07e2dbfd3
commit 201f027586
2 changed files with 24 additions and 4 deletions

View File

@@ -16,6 +16,7 @@
package com.android.settings.biometrics; package com.android.settings.biometrics;
import android.annotation.Nullable;
import android.content.Intent; import android.content.Intent;
import android.os.UserHandle; import android.os.UserHandle;
import android.view.View; import android.view.View;
@@ -33,6 +34,7 @@ public abstract class BiometricsEnrollEnrolling extends BiometricEnrollBase
private static final String TAG_SIDECAR = "sidecar"; private static final String TAG_SIDECAR = "sidecar";
@Nullable
protected BiometricEnrollSidecar mSidecar; protected BiometricEnrollSidecar mSidecar;
/** /**

View File

@@ -33,6 +33,7 @@ import android.os.Bundle;
import android.os.VibrationEffect; import android.os.VibrationEffect;
import android.os.Vibrator; import android.os.Vibrator;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.animation.AnimationUtils; import android.view.animation.AnimationUtils;
@@ -59,6 +60,7 @@ import java.util.List;
*/ */
public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
private static final String TAG = "FingerprintEnrollEnrolling";
static final String TAG_SIDECAR = "sidecar"; static final String TAG_SIDECAR = "sidecar";
private static final int PROGRESS_BAR_MAX = 10000; private static final int PROGRESS_BAR_MAX = 10000;
@@ -89,6 +91,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
.build(); .build();
private boolean mCanAssumeUdfps;
private ProgressBar mProgressBar; private ProgressBar mProgressBar;
private ObjectAnimator mProgressAnim; private ObjectAnimator mProgressAnim;
private TextView mStartMessage; private TextView mStartMessage;
@@ -137,9 +140,9 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
final FingerprintManager fingerprintManager = getSystemService(FingerprintManager.class); final FingerprintManager fingerprintManager = getSystemService(FingerprintManager.class);
final List<FingerprintSensorPropertiesInternal> props = final List<FingerprintSensorPropertiesInternal> props =
fingerprintManager.getSensorPropertiesInternal(); fingerprintManager.getSensorPropertiesInternal();
final boolean canAssumeUdfps = props.size() == 1 && props.get(0).isAnyUdfpsType(); mCanAssumeUdfps = props.size() == 1 && props.get(0).isAnyUdfpsType();
if (canAssumeUdfps) { if (mCanAssumeUdfps) {
// Use a custom layout since animations, etc must be based off of the sensor's physical // Use a custom layout since animations, etc must be based off of the sensor's physical
// location. // location.
setContentView(R.layout.udfps_enroll_enrolling); setContentView(R.layout.udfps_enroll_enrolling);
@@ -158,6 +161,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
mProgressBar = findViewById(R.id.fingerprint_progress_bar); mProgressBar = findViewById(R.id.fingerprint_progress_bar);
mVibrator = getSystemService(Vibrator.class); mVibrator = getSystemService(Vibrator.class);
if (mCanAssumeUdfps) {
mProgressBar.setVisibility(View.INVISIBLE);
}
if (getLayout().shouldApplyPartnerHeavyThemeResource()) { if (getLayout().shouldApplyPartnerHeavyThemeResource()) {
DescriptionStyler.applyPartnerCustomizationHeavyStyle(mRepeatMessage); DescriptionStyler.applyPartnerCustomizationHeavyStyle(mRepeatMessage);
} else if (getLayout().shouldApplyPartnerResource()) { } else if (getLayout().shouldApplyPartnerResource()) {
@@ -213,7 +220,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
@Override @Override
protected boolean shouldStartAutomatically() { protected boolean shouldStartAutomatically() {
return true; return !mCanAssumeUdfps;
} }
@Override @Override
@@ -229,6 +236,12 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
@Override @Override
public void onEnterAnimationComplete() { public void onEnterAnimationComplete() {
super.onEnterAnimationComplete(); super.onEnterAnimationComplete();
if (mCanAssumeUdfps) {
startEnrollment();
mProgressBar.setVisibility(View.VISIBLE);
}
mAnimationCancelled = false; mAnimationCancelled = false;
startIconAnimation(); startIconAnimation();
} }
@@ -272,7 +285,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
} }
private void updateDescription() { private void updateDescription() {
if (mSidecar.getEnrollmentSteps() == -1) { if (mSidecar == null || mSidecar.getEnrollmentSteps() == -1) {
mStartMessage.setVisibility(View.VISIBLE); mStartMessage.setVisibility(View.VISIBLE);
mRepeatMessage.setVisibility(View.INVISIBLE); mRepeatMessage.setVisibility(View.INVISIBLE);
} else { } else {
@@ -319,6 +332,11 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
} }
private void updateProgress(boolean animate) { private void updateProgress(boolean animate) {
if (mSidecar == null || !mSidecar.isEnrolling()) {
Log.d(TAG, "Enrollment not started yet");
return;
}
int progress = getProgress( int progress = getProgress(
mSidecar.getEnrollmentSteps(), mSidecar.getEnrollmentRemaining()); mSidecar.getEnrollmentSteps(), mSidecar.getEnrollmentRemaining());
if (animate) { if (animate) {