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(); + } + } }