diff options
author | 2014-08-21 11:27:33 +0200 | |
---|---|---|
committer | 2016-11-29 14:48:46 +0100 | |
commit | 5be868c590257f6cdccc19770051bf54552216df (patch) | |
tree | 8c2f790a0ceebc692e8552fb989267a44f4fbf5b | |
parent | e1cb95bbeec31971dcab6a39b4666a12214a68b3 (diff) |
Improve "Try again in 1 seconds" behavior in lockscreen
When user fails an authentification in lockscreen many times,
"Try again in 30 seconds." is displayed and a 30 seconds
timer starts to count backwards.
This lets "Try again in 1 seconds" to be displayed for one second.
Bug: 31078006
Change-Id: I6c7de2b751582bb06a93e583b710f83201da1728
-rw-r--r-- | packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java | 11 | ||||
-rw-r--r-- | packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java | 7 |
2 files changed, 13 insertions, 5 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java index 94286ec6a785..5aa673b40124 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java @@ -44,6 +44,7 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout protected View mEcaView; protected boolean mEnableHaptics; private boolean mDismissing; + private CountDownTimer mCountdownTimer = null; // To avoid accidental lockout due to events while the device in in the pocket, ignore // any passwords with length less than or equal to this length. @@ -215,11 +216,13 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout protected void handleAttemptLockout(long elapsedRealtimeDeadline) { setPasswordEntryEnabled(false); long elapsedRealtime = SystemClock.elapsedRealtime(); - new CountDownTimer(elapsedRealtimeDeadline - elapsedRealtime, 1000) { + long secondsInFuture = (long) Math.ceil( + (elapsedRealtimeDeadline - elapsedRealtime) / 1000.0); + mCountdownTimer = new CountDownTimer(secondsInFuture * 1000, 1000) { @Override public void onTick(long millisUntilFinished) { - int secondsRemaining = (int) (millisUntilFinished / 1000); + int secondsRemaining = (int) Math.round(millisUntilFinished / 1000.0); mSecurityMessageDisplay.formatMessage( R.string.kg_too_many_failed_attempts_countdown, secondsRemaining); } @@ -252,6 +255,10 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout @Override public void onPause() { + if (mCountdownTimer != null) { + mCountdownTimer.cancel(); + mCountdownTimer = null; + } if (mPendingLockCheck != null) { mPendingLockCheck.cancel(false); mPendingLockCheck = null; diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java index 330632b701f1..c2b57ffa6113 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java @@ -325,12 +325,13 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit mLockPatternView.clearPattern(); mLockPatternView.setEnabled(false); final long elapsedRealtime = SystemClock.elapsedRealtime(); - - mCountdownTimer = new CountDownTimer(elapsedRealtimeDeadline - elapsedRealtime, 1000) { + final long secondsInFuture = (long) Math.ceil( + (elapsedRealtimeDeadline - elapsedRealtime) / 1000.0); + mCountdownTimer = new CountDownTimer(secondsInFuture * 1000, 1000) { @Override public void onTick(long millisUntilFinished) { - final int secondsRemaining = (int) (millisUntilFinished / 1000); + final int secondsRemaining = (int) Math.round(millisUntilFinished / 1000.0); mSecurityMessageDisplay.formatMessage( R.string.kg_too_many_failed_attempts_countdown, secondsRemaining); } |