Loading packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +25 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private int mFingerprintRunningState = FINGERPRINT_STATE_STOPPED; private LockPatternUtils mLockPatternUtils; // If FP daemon dies, keyguard should retry after a short delay private int mHardwareUnavailableRetryCount = 0; private static final int HW_UNAVAILABLE_TIMEOUT = 3000; // ms private static final int HW_UNAVAILABLE_RETRY_MAX = 3; private final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { Loading Loading @@ -471,6 +476,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } } private Runnable mRetryFingerprintAuthentication = new Runnable() { @Override public void run() { Log.w(TAG, "Retrying fingerprint after HW unavailable, attempt " + mHardwareUnavailableRetryCount); updateFingerprintListeningState(); } }; private void handleFingerprintError(int msgId, String errString) { if (msgId == FingerprintManager.FINGERPRINT_ERROR_CANCELED && mFingerprintRunningState == FINGERPRINT_STATE_CANCELLING_RESTARTING) { Loading @@ -479,6 +493,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } else { setFingerprintRunningState(FINGERPRINT_STATE_STOPPED); } if (msgId == FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE) { if (mHardwareUnavailableRetryCount < HW_UNAVAILABLE_RETRY_MAX) { mHardwareUnavailableRetryCount++; mHandler.removeCallbacks(mRetryFingerprintAuthentication); mHandler.postDelayed(mRetryFingerprintAuthentication, HW_UNAVAILABLE_TIMEOUT); } } for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { Loading Loading @@ -940,6 +963,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } private void handleScreenTurnedOff() { mHardwareUnavailableRetryCount = 0; final int count = mCallbacks.size(); for (int i = 0; i < count; i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); Loading Loading @@ -1072,6 +1096,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } private void updateFingerprintListeningState() { mHandler.removeCallbacks(mRetryFingerprintAuthentication); boolean shouldListenForFingerprint = shouldListenForFingerprint(); if (mFingerprintRunningState == FINGERPRINT_STATE_RUNNING && !shouldListenForFingerprint) { stopListeningForFingerprint(); Loading Loading
packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +25 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private int mFingerprintRunningState = FINGERPRINT_STATE_STOPPED; private LockPatternUtils mLockPatternUtils; // If FP daemon dies, keyguard should retry after a short delay private int mHardwareUnavailableRetryCount = 0; private static final int HW_UNAVAILABLE_TIMEOUT = 3000; // ms private static final int HW_UNAVAILABLE_RETRY_MAX = 3; private final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { Loading Loading @@ -471,6 +476,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } } private Runnable mRetryFingerprintAuthentication = new Runnable() { @Override public void run() { Log.w(TAG, "Retrying fingerprint after HW unavailable, attempt " + mHardwareUnavailableRetryCount); updateFingerprintListeningState(); } }; private void handleFingerprintError(int msgId, String errString) { if (msgId == FingerprintManager.FINGERPRINT_ERROR_CANCELED && mFingerprintRunningState == FINGERPRINT_STATE_CANCELLING_RESTARTING) { Loading @@ -479,6 +493,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } else { setFingerprintRunningState(FINGERPRINT_STATE_STOPPED); } if (msgId == FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE) { if (mHardwareUnavailableRetryCount < HW_UNAVAILABLE_RETRY_MAX) { mHardwareUnavailableRetryCount++; mHandler.removeCallbacks(mRetryFingerprintAuthentication); mHandler.postDelayed(mRetryFingerprintAuthentication, HW_UNAVAILABLE_TIMEOUT); } } for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { Loading Loading @@ -940,6 +963,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } private void handleScreenTurnedOff() { mHardwareUnavailableRetryCount = 0; final int count = mCallbacks.size(); for (int i = 0; i < count; i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); Loading Loading @@ -1072,6 +1096,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } private void updateFingerprintListeningState() { mHandler.removeCallbacks(mRetryFingerprintAuthentication); boolean shouldListenForFingerprint = shouldListenForFingerprint(); if (mFingerprintRunningState == FINGERPRINT_STATE_RUNNING && !shouldListenForFingerprint) { stopListeningForFingerprint(); Loading