Update and cleanup FingerprintManager API to new spec

Fixes bug 21040383

Change-Id: Ic2b279ffad47d31a6ad3beed7b3af5ad0a61e815
This commit is contained in:
Jim Miller
2015-05-26 18:26:11 -07:00
parent 9a58361076
commit fa47bc0290
3 changed files with 35 additions and 17 deletions

View File

@@ -78,7 +78,7 @@ public class FingerprintEnrollSidecar extends Fragment {
mEnrollmentSteps = -1; mEnrollmentSteps = -1;
mEnrollmentCancel = new CancellationSignal(); mEnrollmentCancel = new CancellationSignal();
getActivity().getSystemService(FingerprintManager.class).enroll(mToken, mEnrollmentCancel, getActivity().getSystemService(FingerprintManager.class).enroll(mToken, mEnrollmentCancel,
mEnrollmentCallback, 0); 0 /* flags */, mEnrollmentCallback);
mEnrolling = true; mEnrolling = true;
} }

View File

@@ -117,6 +117,8 @@ public class FingerprintSettings extends SubSettings {
private static final int MSG_REFRESH_FINGERPRINT_TEMPLATES = 1000; private static final int MSG_REFRESH_FINGERPRINT_TEMPLATES = 1000;
private static final int MSG_FINGER_AUTH_SUCCESS = 1001; private static final int MSG_FINGER_AUTH_SUCCESS = 1001;
private static final int MSG_FINGER_AUTH_FAIL = 1002; private static final int MSG_FINGER_AUTH_FAIL = 1002;
private static final int MSG_FINGER_AUTH_ERROR = 1003;
private static final int MSG_FINGER_AUTH_HELP = 1004;
private static final int CONFIRM_REQUEST = 101; private static final int CONFIRM_REQUEST = 101;
private static final int CHOOSE_LOCK_GENERIC_REQUEST = 102; private static final int CHOOSE_LOCK_GENERIC_REQUEST = 102;
@@ -146,22 +148,14 @@ public class FingerprintSettings extends SubSettings {
@Override @Override
public void onAuthenticationError(int errMsgId, CharSequence errString) { public void onAuthenticationError(int errMsgId, CharSequence errString) {
// get activity will be null on a screen rotation mHandler.obtainMessage(MSG_FINGER_AUTH_ERROR, errMsgId, 0, errString)
final Activity activity = getActivity(); .sendToTarget();
if (activity != null) {
Toast.makeText(activity, errString, Toast.LENGTH_SHORT);
}
if (errMsgId != FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
retryFingerprint(false);
}
} }
@Override @Override
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) { public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
final Activity activity = getActivity(); mHandler.obtainMessage(MSG_FINGER_AUTH_HELP, helpMsgId, 0, helpString)
if (activity != null) { .sendToTarget();
Toast.makeText(activity, helpString, Toast.LENGTH_SHORT);
}
} }
}; };
private RemovalCallback mRemoveCallback = new RemovalCallback() { private RemovalCallback mRemoveCallback = new RemovalCallback() {
@@ -187,12 +181,36 @@ public class FingerprintSettings extends SubSettings {
removeFingerprintPreference(msg.arg1); removeFingerprintPreference(msg.arg1);
break; break;
case MSG_FINGER_AUTH_SUCCESS: case MSG_FINGER_AUTH_SUCCESS:
mFingerprintCancel = null;
highlightFingerprintItem(msg.arg1); highlightFingerprintItem(msg.arg1);
retryFingerprint(true); retryFingerprint(true);
break; break;
case MSG_FINGER_AUTH_FAIL: case MSG_FINGER_AUTH_FAIL:
mFingerprintCancel = null;
retryFingerprint(true); retryFingerprint(true);
break; break;
case MSG_FINGER_AUTH_ERROR: {
mFingerprintCancel = null;
// get activity will be null on a screen rotation
final Activity activity = getActivity();
if (activity != null) {
CharSequence errString = (CharSequence) msg.obj;
Toast.makeText(activity, errString , Toast.LENGTH_SHORT);
}
final int errMsgId = msg.arg1;
if (errMsgId != FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
retryFingerprint(false);
}
}
break;
case MSG_FINGER_AUTH_HELP: {
final Activity activity = getActivity();
if (activity != null) {
CharSequence helpString = (CharSequence) msg.obj;
Toast.makeText(activity, helpString , Toast.LENGTH_SHORT);
}
}
break;
} }
}; };
}; };
@@ -208,9 +226,10 @@ public class FingerprintSettings extends SubSettings {
if (resetAttempts) { if (resetAttempts) {
mMaxFingerprintAttempts = 0; mMaxFingerprintAttempts = 0;
} }
if (mMaxFingerprintAttempts < MAX_RETRY_ATTEMPTS) { if (mMaxFingerprintAttempts < MAX_RETRY_ATTEMPTS && mFingerprintCancel == null) {
mFingerprintCancel = new CancellationSignal(); mFingerprintCancel = new CancellationSignal();
mFingerprintManager.authenticate(null, mFingerprintCancel, mAuthCallback, 0); mFingerprintManager.authenticate(null, mFingerprintCancel, 0 /* flags */,
mAuthCallback, null);
} }
mMaxFingerprintAttempts++; mMaxFingerprintAttempts++;
} }
@@ -351,7 +370,6 @@ public class FingerprintSettings extends SubSettings {
intent.setClassName("com.android.settings", intent.setClassName("com.android.settings",
FingerprintEnrollEnrolling.class.getName()); FingerprintEnrollEnrolling.class.getName());
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken);
stopFingerprint();
startActivityForResult(intent, ADD_FINGERPRINT_REQUEST); startActivityForResult(intent, ADD_FINGERPRINT_REQUEST);
} else if (pref instanceof FingerprintPreference) { } else if (pref instanceof FingerprintPreference) {
FingerprintPreference fpref = (FingerprintPreference) pref; FingerprintPreference fpref = (FingerprintPreference) pref;

View File

@@ -51,7 +51,7 @@ public class FingerprintUiHelper extends FingerprintManager.AuthenticationCallba
public void startListening() { public void startListening() {
if (mFingerprintManager.getEnrolledFingerprints().size() > 0) { if (mFingerprintManager.getEnrolledFingerprints().size() > 0) {
mCancellationSignal = new CancellationSignal(); mCancellationSignal = new CancellationSignal();
mFingerprintManager.authenticate(null, mCancellationSignal, this, 0 /* flags */); mFingerprintManager.authenticate(null, mCancellationSignal, 0 /* flags */, this, null);
setFingerprintIconVisibility(true); setFingerprintIconVisibility(true);
mIcon.setImageResource(R.drawable.ic_fingerprint); mIcon.setImageResource(R.drawable.ic_fingerprint);
} }