Merge "Auto-advance when fingerprint touch is detected."

This commit is contained in:
Jim Miller
2016-01-13 23:37:12 +00:00
committed by Android (Google) Code Review
3 changed files with 67 additions and 4 deletions

View File

@@ -50,7 +50,7 @@ import com.android.settings.R;
public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
implements FingerprintEnrollSidecar.Listener {
private static final String TAG_SIDECAR = "sidecar";
static final String TAG_SIDECAR = "sidecar";
private static final int PROGRESS_BAR_MAX = 10000;
private static final int FINISH_DELAY = 250;
@@ -170,6 +170,8 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
mSidecar.setListener(null);
stopIconAnimation();
if (!isChangingConfigurations()) {
mSidecar.cancelEnrollment();
getFragmentManager().beginTransaction().remove(mSidecar).commit();
finish();
}
}

View File

@@ -23,6 +23,7 @@ import android.os.Bundle;
import com.android.internal.logging.MetricsLogger;
import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.R;
import com.android.settings.fingerprint.FingerprintEnrollSidecar.Listener;
/**
* Activity explaining the fingerprint sensor location for fingerprint enrollment.
@@ -35,16 +36,23 @@ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase {
private FingerprintFindSensorAnimation mAnimation;
private boolean mLaunchedConfirmLock;
private FingerprintEnrollSidecar mSidecar;
private boolean mNextClicked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fingerprint_enroll_find_sensor);
setHeaderText(R.string.security_settings_fingerprint_enroll_find_sensor_title);
mLaunchedConfirmLock = savedInstanceState != null && savedInstanceState.getBoolean(
EXTRA_KEY_LAUNCHED_CONFIRM);
if (savedInstanceState != null) {
mLaunchedConfirmLock = savedInstanceState.getBoolean(EXTRA_KEY_LAUNCHED_CONFIRM);
mToken = savedInstanceState.getByteArray(
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
}
if (mToken == null && !mLaunchedConfirmLock) {
launchConfirmLock();
} else if (mToken != null) {
startLookingForFingerprint(); // already confirmed, so start looking for fingerprint
}
mAnimation = (FingerprintFindSensorAnimation) findViewById(
R.id.fingerprint_sensor_location_animation);
@@ -56,6 +64,37 @@ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase {
mAnimation.startAnimation();
}
private void startLookingForFingerprint() {
mSidecar = (FingerprintEnrollSidecar) getFragmentManager().findFragmentByTag(
FingerprintEnrollEnrolling.TAG_SIDECAR);
if (mSidecar == null) {
mSidecar = new FingerprintEnrollSidecar();
getFragmentManager().beginTransaction()
.add(mSidecar, FingerprintEnrollEnrolling.TAG_SIDECAR).commit();
}
mSidecar.setListener(new Listener() {
@Override
public void onEnrollmentProgressChange(int steps, int remaining) {
mNextClicked = true;
if (!mSidecar.cancelEnrollment()) {
proceedToEnrolling();
}
}
@Override
public void onEnrollmentHelp(CharSequence helpString) {
}
@Override
public void onEnrollmentError(int errMsgId, CharSequence errString) {
if (mNextClicked && errMsgId == FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
mNextClicked = false;
proceedToEnrolling();
}
}
});
}
@Override
protected void onStop() {
super.onStop();
@@ -72,10 +111,20 @@ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase {
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(EXTRA_KEY_LAUNCHED_CONFIRM, mLaunchedConfirmLock);
outState.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken);
}
@Override
protected void onNextButtonClick() {
mNextClicked = true;
if (mSidecar == null || (mSidecar != null && !mSidecar.cancelEnrollment())) {
proceedToEnrolling();
}
}
private void proceedToEnrolling() {
getFragmentManager().beginTransaction().remove(mSidecar).commit();
mSidecar = null;
startActivityForResult(getEnrollingIntent(), ENROLLING);
}
@@ -85,6 +134,8 @@ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase {
if (resultCode == RESULT_OK) {
mToken = data.getByteArrayExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
overridePendingTransition(R.anim.suw_slide_next_in, R.anim.suw_slide_next_out);
getIntent().putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken);
startLookingForFingerprint();
} else {
finish();
}
@@ -105,6 +156,9 @@ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase {
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
if (enrolled >= max) {
finish();
} else {
// We came back from enrolling but it wasn't completed, start again.
startLookingForFingerprint();
}
}
} else {

View File

@@ -79,13 +79,15 @@ public class FingerprintEnrollSidecar extends InstrumentedFragment {
mEnrolling = true;
}
private void cancelEnrollment() {
boolean cancelEnrollment() {
mHandler.removeCallbacks(mTimeoutRunnable);
if (mEnrolling) {
mEnrollmentCancel.cancel();
mEnrolling = false;
mEnrollmentSteps = -1;
return true;
}
return false;
}
public void setListener(Listener listener) {
@@ -131,6 +133,7 @@ public class FingerprintEnrollSidecar extends InstrumentedFragment {
if (mListener != null) {
mListener.onEnrollmentError(errMsgId, errString);
}
mEnrolling = false;
}
};
@@ -151,4 +154,8 @@ public class FingerprintEnrollSidecar extends InstrumentedFragment {
void onEnrollmentError(int errMsgId, CharSequence errString);
void onEnrollmentProgressChange(int steps, int remaining);
}
public boolean isEnrolling() {
return mEnrolling;
}
}