Save isCanceled state and restore when rotation

- Create mIsCanceled field in FingerprintEnrollEnrolling
- Override onSaveInstanceState and save mIsCanceled state
- onCreate restore mIsCanceled
- shouldStartAutomatically() return mRestoring && !mIsCanceled
- Integrate FingerprintErrorDialog with "try again"-> Clear mIsCanceled

Bug: 237103873
Test: manual enroll UDFPS, and wait for timeout, seeing timeout error
dialog showing above fingerprint enrollment pad.

Change-Id: I3a3010ca12aa0b23fd122a8afc9b82adf5656fb8
This commit is contained in:
lbill
2022-07-12 05:06:09 +00:00
committed by Bill Lin
parent 51d087cd67
commit d7f53d4180
2 changed files with 27 additions and 3 deletions

View File

@@ -76,6 +76,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
private static final String TAG = "FingerprintEnrollEnrolling"; private static final String TAG = "FingerprintEnrollEnrolling";
static final String TAG_SIDECAR = "sidecar"; static final String TAG_SIDECAR = "sidecar";
static final String KEY_STATE_CANCELED = "is_canceled";
private static final int PROGRESS_BAR_MAX = 10000; private static final int PROGRESS_BAR_MAX = 10000;
@@ -129,6 +130,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
private boolean mRestoring; private boolean mRestoring;
private Vibrator mVibrator; private Vibrator mVibrator;
private boolean mIsSetupWizard; private boolean mIsSetupWizard;
private boolean mIsCanceled;
private AccessibilityManager mAccessibilityManager; private AccessibilityManager mAccessibilityManager;
private boolean mIsAccessibilityEnabled; private boolean mIsAccessibilityEnabled;
private LottieAnimationView mIllustrationLottie; private LottieAnimationView mIllustrationLottie;
@@ -153,6 +155,9 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
restoreSavedState(savedInstanceState);
}
mFingerprintManager = getSystemService(FingerprintManager.class); mFingerprintManager = getSystemService(FingerprintManager.class);
final List<FingerprintSensorPropertiesInternal> props = final List<FingerprintSensorPropertiesInternal> props =
mFingerprintManager.getSensorPropertiesInternal(); mFingerprintManager.getSensorPropertiesInternal();
@@ -238,7 +243,6 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
return true; return true;
}); });
} }
mRestoring = savedInstanceState != null;
} }
@Override @Override
@@ -253,11 +257,22 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
if (mCanAssumeUdfps) { if (mCanAssumeUdfps) {
// Continue enrollment if restoring (e.g. configuration changed). Otherwise, wait // Continue enrollment if restoring (e.g. configuration changed). Otherwise, wait
// for the entry animation to complete before starting. // for the entry animation to complete before starting.
return mRestoring; return mRestoring && !mIsCanceled;
} }
return true; return true;
} }
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(KEY_STATE_CANCELED, mIsCanceled);
}
private void restoreSavedState(Bundle savedInstanceState) {
mRestoring = true;
mIsCanceled = savedInstanceState.getBoolean(KEY_STATE_CANCELED, false);
}
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
@@ -498,7 +513,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
@Override @Override
public void onEnrollmentError(int errMsgId, CharSequence errString) { public void onEnrollmentError(int errMsgId, CharSequence errString) {
FingerprintErrorDialog.showErrorDialog(this, errMsgId); FingerprintErrorDialog.showErrorDialog(this, errMsgId);
mIsCanceled = true;
cancelEnrollment();
stopIconAnimation(); stopIconAnimation();
stopListenOrientationEvent();
if (!mCanAssumeUdfps) { if (!mCanAssumeUdfps) {
mErrorText.removeCallbacks(mTouchAgainRunnable); mErrorText.removeCallbacks(mTouchAgainRunnable);
} }

View File

@@ -18,11 +18,13 @@ package com.android.settings.biometrics.fingerprint;
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED; import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED;
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_TIMEOUT; import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_TIMEOUT;
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.KEY_STATE_CANCELED;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent;
import android.hardware.biometrics.BiometricConstants; import android.hardware.biometrics.BiometricConstants;
import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle; import android.os.Bundle;
@@ -68,7 +70,11 @@ public class FingerprintErrorDialog extends InstrumentedDialogFragment {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
dialog.dismiss(); dialog.dismiss();
getActivity().recreate(); Activity activity = getActivity();
Intent intent = activity.getIntent();
intent.putExtra(KEY_STATE_CANCELED, false);
activity.startActivity(intent);
activity.finish();
} }
}) })
.setNegativeButton( .setNegativeButton(