Only listen for fingerprint if needed.
Clean up fingerprint listening lifecycle. Only listen for fingerprint if both screen is turned on and Keyguard is actually showing (not occluded). Change-Id: I169ce9df308b96487ed9dc5c8ad8f1c301f2ef93
This commit is contained in:
@@ -669,7 +669,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
cb.onScreenTurnedOn();
|
||||
}
|
||||
}
|
||||
startListeningForFingerprint();
|
||||
updateFingerprintListeningState();
|
||||
}
|
||||
|
||||
protected void handleScreenTurnedOff(int arg1) {
|
||||
@@ -681,7 +681,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
cb.onScreenTurnedOff(arg1);
|
||||
}
|
||||
}
|
||||
stopListeningForFingerprint();
|
||||
updateFingerprintListeningState();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -754,14 +754,14 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_SWITCHING,
|
||||
newUserId, 0, reply));
|
||||
mSwitchingUser = true;
|
||||
stopListeningForFingerprint();
|
||||
updateFingerprintListeningState();
|
||||
}
|
||||
@Override
|
||||
public void onUserSwitchComplete(int newUserId) throws RemoteException {
|
||||
mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_SWITCH_COMPLETE,
|
||||
newUserId, 0));
|
||||
mSwitchingUser = false;
|
||||
startListeningForFingerprint();
|
||||
updateFingerprintListeningState();
|
||||
}
|
||||
@Override
|
||||
public void onForegroundProfileSwitch(int newProfileId) {
|
||||
@@ -777,7 +777,20 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
trustManager.registerTrustListener(this);
|
||||
|
||||
mFpm = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
|
||||
startListeningForFingerprint();
|
||||
updateFingerprintListeningState();
|
||||
}
|
||||
|
||||
private void updateFingerprintListeningState() {
|
||||
boolean shouldListenForFingerprint = shouldListenForFingerprint();
|
||||
if (mFingerprintDetectionRunning && !shouldListenForFingerprint) {
|
||||
stopListeningForFingerprint();
|
||||
} else if (!mFingerprintDetectionRunning && shouldListenForFingerprint) {
|
||||
startListeningForFingerprint();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean shouldListenForFingerprint() {
|
||||
return mScreenOn && mKeyguardIsVisible && !mSwitchingUser;
|
||||
}
|
||||
|
||||
private void startListeningForFingerprint() {
|
||||
@@ -794,7 +807,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
}
|
||||
}
|
||||
|
||||
public void stopListeningForFingerprint() {
|
||||
private void stopListeningForFingerprint() {
|
||||
if (DEBUG) Log.v(TAG, "stopListeningForFingerprint()");
|
||||
if (isFingerprintDetectionRunning()) {
|
||||
mFingerprintCancelSignal.cancel();
|
||||
@@ -1052,6 +1065,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
cb.onKeyguardVisibilityChangedRaw(isShowing);
|
||||
}
|
||||
}
|
||||
updateFingerprintListeningState();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1393,14 +1393,9 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
updateActivityLockScreenState();
|
||||
adjustStatusBarLocked();
|
||||
sendUserPresentBroadcast();
|
||||
maybeStopListeningForFingerprint();
|
||||
}
|
||||
}
|
||||
|
||||
private void maybeStopListeningForFingerprint() {
|
||||
mUpdateMonitor.stopListeningForFingerprint();
|
||||
}
|
||||
|
||||
private void adjustStatusBarLocked() {
|
||||
if (mStatusBarManager == null) {
|
||||
mStatusBarManager = (StatusBarManager)
|
||||
|
||||
Reference in New Issue
Block a user