Add ways to dismiss check enroll fingerprint dialog

Dismiss dialog when:
- touch outside the fingerprint icon
- failure over 3 times

Bug: 404875447
Test: 1. enroll a fingerprint
      2. click "check enrolled fingerprints"
      3. touch outside fp icon
      4. use not enrolled finger 3 times
Flag: EXEMPT bug fix
Change-Id: I30850c0e8a37d89ffeac75575b04eb8584271dbe
This commit is contained in:
Shawn Lin
2025-03-20 10:54:49 +00:00
parent a305fb9de3
commit 3a9f242226
2 changed files with 30 additions and 1 deletions

View File

@@ -1654,7 +1654,10 @@ public class FingerprintSettings extends SubSettings {
private static final String KEY_USER_ID = "user_id";
private static final String KEY_SENSOR_PROPERTIES = "sensor_properties";
private static final String EXTRA_FAILURE_COUNT = "failure_count";
private static final int MAX_FAILURE_COUNT = 3;
private int mUserId;
private int mFailureCount;
private @Nullable CancellationSignal mCancellationSignal;
private @Nullable FingerprintSensorPropertiesInternal mSensorPropertiesInternal;
@@ -1663,6 +1666,9 @@ public class FingerprintSettings extends SubSettings {
@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
if (savedInstanceState != null) {
mFailureCount = savedInstanceState.getInt(EXTRA_FAILURE_COUNT, 0);
}
return inflater.inflate(
R.layout.fingerprint_check_enrolled_dialog, container, false);
}
@@ -1682,12 +1688,22 @@ public class FingerprintSettings extends SubSettings {
final UdfpsCheckEnrolledView v =
dialog.findViewById(R.id.udfps_check_enrolled_view);
v.setSensorProperties(mSensorPropertiesInternal);
v.setOnTouchListener((view, event) -> {
Log.d(TAG, "CheckEnrollDialog dismissed: touch outside");
dialog.dismiss();
return false;
});
});
}
return dialog;
}
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(EXTRA_FAILURE_COUNT, mFailureCount);
}
@Override
public void onStart() {
super.onStart();
@@ -1752,6 +1768,11 @@ public class FingerprintSettings extends SubSettings {
message.postDelayed(() -> {
message.setText(R.string.fingerprint_check_enroll_touch_sensor);
}, 2000);
mFailureCount++;
if (mFailureCount >= MAX_FAILURE_COUNT) {
Log.d(TAG, "CheckEnrollDialog dismissed: failed 3 times");
dialog.dismiss();
}
}
},
null /* handler */,

View File

@@ -24,6 +24,7 @@ import android.util.AttributeSet;
import android.util.Log;
import android.util.RotationUtils;
import android.view.DisplayInfo;
import android.view.MotionEvent;
import android.view.Surface;
import android.widget.ImageView;
import android.widget.RelativeLayout;
@@ -61,6 +62,13 @@ public class UdfpsCheckEnrolledView extends RelativeLayout {
super.onFinishInflate();
mFingerprintView = findViewById(R.id.udfps_fingerprint_sensor_view);
mFingerprintView.setImageDrawable(mFingerprintDrawable);
mFingerprintView.setOnTouchListener((v, event) -> {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Log.d(TAG, "Fingerprint view touched!");
return true;
}
return false;
});
}
/**