diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9ca27b89e78..41b96c278bb 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -788,6 +788,10 @@
Setup screen lock
Done
+
+ Whoops, that\'s not the sensor
+
+ Use the fingerprint sensor on your device.
Add another
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
index 56eee18e682..c3e77241bf3 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
@@ -18,12 +18,17 @@ package com.android.settings.fingerprint;
import android.animation.Animator;
import android.animation.ObjectAnimator;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.content.DialogInterface;
import android.content.Intent;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.PowerManager;
import android.os.SystemClock;
+import android.view.MotionEvent;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
@@ -42,6 +47,12 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase {
private static final int PROGRESS_BAR_MAX = 10000;
private static final int FINISH_DELAY = 250;
+ /**
+ * How many times the user needs to touch the icon until we show the dialog that this is not the
+ * fingerprint sensor.
+ */
+ private static final int ICON_TOUCH_COUNT_SHOW_UNTIL_DIALOG_SHOWN = 3;
+
private PowerManager mPowerManager;
private CancellationSignal mEnrollmentCancel = new CancellationSignal();
private int mEnrollmentSteps;
@@ -53,6 +64,7 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase {
private TextView mRepeatMessage;
private TextView mErrorText;
private Interpolator mFastOutSlowInInterpolator;
+ private int mIconTouchCount;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -67,6 +79,19 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase {
mFingerprintAnimator = (ImageView) findViewById(R.id.fingerprint_animator);
mFastOutSlowInInterpolator = AnimationUtils.loadInterpolator(
this, android.R.interpolator.fast_out_slow_in);
+ findViewById(R.id.fingerprint_animator).setOnTouchListener(new View.OnTouchListener() {
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
+ mIconTouchCount++;
+ if (mIconTouchCount == ICON_TOUCH_COUNT_SHOW_UNTIL_DIALOG_SHOWN) {
+ showIconTouchDialog();
+ mIconTouchCount = 0;
+ }
+ }
+ return true;
+ }
+ });
startEnrollment();
}
@@ -125,6 +150,10 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase {
}
}
+ private void showIconTouchDialog() {
+ new IconTouchDialog().show(getFragmentManager(), null /* tag */);
+ }
+
private final Animator.AnimatorListener mProgressAnimationListener
= new Animator.AnimatorListener() {
@@ -184,4 +213,22 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase {
launchFinish(mToken);
}
};
+
+ private static class IconTouchDialog extends DialogFragment {
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ builder.setTitle(R.string.security_settings_fingerprint_enroll_touch_dialog_title)
+ .setMessage(R.string.security_settings_fingerprint_enroll_touch_dialog_message)
+ .setPositiveButton(R.string.security_settings_fingerprint_enroll_dialog_ok,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ });
+ return builder.create();
+ }
+ }
}