Merge "going directly to backup after face unlock fails 15 times" into ics-mr0

This commit is contained in:
Uriel Rodriguez
2011-10-15 08:44:21 -07:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 2 deletions

View File

@@ -21,5 +21,6 @@ import android.os.IBinder;
oneway interface IFaceLockCallback {
void unlock();
void cancel();
void reportFailedAttempt();
void pokeWakelock();
}

View File

@@ -130,6 +130,10 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
// So the user has a consistent amount of time when brought to the backup method from FaceLock
private final int BACKUP_LOCK_TIMEOUT = 5000;
// Needed to keep track of failed FaceUnlock attempts
private int mFailedFaceUnlockAttempts = 0;
private static final int FAILED_FACE_UNLOCK_ATTEMPTS_BEFORE_BACKUP = 15;
/**
* The current {@link KeyguardScreen} will use this to communicate back to us.
*/
@@ -439,6 +443,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
}
public void reportSuccessfulUnlockAttempt() {
mFailedFaceUnlockAttempts = 0;
mLockPatternUtils.reportSuccessfulPasswordAttempt();
}
};
@@ -553,7 +558,16 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
* FaceLock, but only if we're not dealing with a call
*/
private void activateFaceLockIfAble() {
if (mUpdateMonitor.getPhoneState() == TelephonyManager.CALL_STATE_IDLE && !mHasOverlay) {
final boolean tooManyFaceUnlockTries =
(mFailedFaceUnlockAttempts >= FAILED_FACE_UNLOCK_ATTEMPTS_BEFORE_BACKUP);
final int failedBackupAttempts = mUpdateMonitor.getFailedAttempts();
final boolean backupIsTimedOut =
(failedBackupAttempts >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT);
if (tooManyFaceUnlockTries) Log.i(TAG, "tooManyFaceUnlockTries: " + tooManyFaceUnlockTries);
if (mUpdateMonitor.getPhoneState() == TelephonyManager.CALL_STATE_IDLE
&& !mHasOverlay
&& !tooManyFaceUnlockTries
&& !backupIsTimedOut) {
bindToFaceLock();
// Show FaceLock area, but only for a little bit so lockpattern will become visible if
// FaceLock fails to start or crashes
@@ -1296,7 +1310,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
}
// Stops the FaceLock UI and exposes the backup method without unlocking
// This means either the user has cancelled out or FaceLock failed to recognize them
// This means the user has cancelled out
@Override
public void cancel() {
if (DEBUG) Log.d(TAG, "FaceLock cancel()");
@@ -1305,6 +1319,17 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT);
}
// Stops the FaceLock UI and exposes the backup method without unlocking
// This means FaceLock failed to recognize them
@Override
public void reportFailedAttempt() {
if (DEBUG) Log.d(TAG, "FaceLock reportFailedAttempt()");
mFailedFaceUnlockAttempts++;
hideFaceLockArea(); // Expose fallback
stopFaceLock();
mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT);
}
// Allows the Face Unlock service to poke the wake lock to keep the lockscreen alive
@Override
public void pokeWakelock() {