Loading packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +31 −4 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private static final int MSG_REPORT_EMERGENCY_CALL_ACTION = 318; private static final int MSG_STARTED_WAKING_UP = 319; private static final int MSG_FINISHED_GOING_TO_SLEEP = 320; private static final int MSG_STARTED_GOING_TO_SLEEP = 321; private static final int MSG_KEYGUARD_BOUNCER_CHANGED = 322; private static final int MSG_FACE_UNLOCK_STATE_CHANGED = 327; private static final int MSG_SIM_SUBSCRIPTION_INFO_CHANGED = 328; Loading Loading @@ -170,6 +171,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { * until the Keyguard has been dismissed. */ private boolean mFingerprintAlreadyAuthenticated; private boolean mGoingToSleep; private boolean mBouncer; private boolean mBootCompleted; Loading Loading @@ -249,6 +251,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { case MSG_REPORT_EMERGENCY_CALL_ACTION: handleReportEmergencyCallAction(); break; case MSG_STARTED_GOING_TO_SLEEP: handleStartedGoingToSleep(msg.arg1); break; case MSG_FINISHED_GOING_TO_SLEEP: handleFinishedGoingToSleep(msg.arg1); break; Loading Loading @@ -884,19 +889,32 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } } protected void handleFinishedGoingToSleep(int arg1) { protected void handleStartedGoingToSleep(int arg1) { clearFingerprintRecognized(); final int count = mCallbacks.size(); for (int i = 0; i < count; i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { cb.onFinishedGoingToSleep(arg1); cb.onStartedGoingToSleep(arg1); } } mGoingToSleep = true; mFingerprintAlreadyAuthenticated = false; updateFingerprintListeningState(); } protected void handleFinishedGoingToSleep(int arg1) { mGoingToSleep = false; final int count = mCallbacks.size(); for (int i = 0; i < count; i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { cb.onFinishedGoingToSleep(arg1); } } updateFingerprintListeningState(); } private void handleScreenTurnedOn() { final int count = mCallbacks.size(); for (int i = 0; i < count; i++) { Loading Loading @@ -1032,8 +1050,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } private boolean shouldListenForFingerprint() { return (mKeyguardIsVisible || !mDeviceInteractive || mBouncer) && !mSwitchingUser && !mFingerprintAlreadyAuthenticated && !isFingerprintDisabled(getCurrentUser()); return (mKeyguardIsVisible || !mDeviceInteractive || mBouncer || mGoingToSleep) && !mSwitchingUser && !mFingerprintAlreadyAuthenticated && !isFingerprintDisabled(getCurrentUser()); } private void startListeningForFingerprint() { Loading Loading @@ -1605,6 +1624,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { mHandler.sendEmptyMessage(MSG_STARTED_WAKING_UP); } public void dispatchStartedGoingToSleep(int why) { mHandler.sendMessage(mHandler.obtainMessage(MSG_STARTED_GOING_TO_SLEEP, why, 0)); } public void dispatchFinishedGoingToSleep(int why) { synchronized(this) { mDeviceInteractive = false; Loading @@ -1630,6 +1653,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { return mDeviceInteractive; } public boolean isGoingToSleep() { return mGoingToSleep; } /** * Find the next SubscriptionId for a SIM in the given state, favoring lower slot numbers first. * @param state Loading packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java +6 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,12 @@ public class KeyguardUpdateMonitorCallback { */ public void onStartedWakingUp() { } /** * Called when the device has started going to sleep. * @param why see {@link #onFinishedGoingToSleep(int)} */ public void onStartedGoingToSleep(int why) { } /** * Called when the device has finished going to sleep. * @param why either {@link WindowManagerPolicy#OFF_BECAUSE_OF_ADMIN}, Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +1 −0 Original line number Diff line number Diff line Loading @@ -679,6 +679,7 @@ public class KeyguardViewMediator extends SystemUI { playSounds(true); } } KeyguardUpdateMonitor.getInstance(mContext).dispatchStartedGoingToSleep(why); notifyStartedGoingToSleep(); } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java +26 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,8 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback { private KeyguardViewMediator mKeyguardViewMediator; private ScrimController mScrimController; private PhoneStatusBar mPhoneStatusBar; private boolean mGoingToSleep; private int mPendingAuthenticatedUserId = -1; public FingerprintUnlockController(Context context, StatusBarWindowManager statusBarWindowManager, Loading Loading @@ -161,6 +163,10 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback { @Override public void onFingerprintAuthenticated(int userId) { if (mUpdateMonitor.isGoingToSleep()) { mPendingAuthenticatedUserId = userId; return; } boolean wasDeviceInteractive = mUpdateMonitor.isDeviceInteractive(); mMode = calculateMode(); if (!wasDeviceInteractive) { Loading Loading @@ -205,6 +211,26 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback { mPhoneStatusBar.notifyFpAuthModeChanged(); } @Override public void onStartedGoingToSleep(int why) { mPendingAuthenticatedUserId = -1; } @Override public void onFinishedGoingToSleep(int why) { if (mPendingAuthenticatedUserId != -1) { // Post this to make sure it's executed after the device is fully locked. mHandler.post(new Runnable() { @Override public void run() { onFingerprintAuthenticated(mPendingAuthenticatedUserId); } }); } mPendingAuthenticatedUserId = -1; } public int getMode() { return mMode; } Loading Loading
packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +31 −4 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private static final int MSG_REPORT_EMERGENCY_CALL_ACTION = 318; private static final int MSG_STARTED_WAKING_UP = 319; private static final int MSG_FINISHED_GOING_TO_SLEEP = 320; private static final int MSG_STARTED_GOING_TO_SLEEP = 321; private static final int MSG_KEYGUARD_BOUNCER_CHANGED = 322; private static final int MSG_FACE_UNLOCK_STATE_CHANGED = 327; private static final int MSG_SIM_SUBSCRIPTION_INFO_CHANGED = 328; Loading Loading @@ -170,6 +171,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { * until the Keyguard has been dismissed. */ private boolean mFingerprintAlreadyAuthenticated; private boolean mGoingToSleep; private boolean mBouncer; private boolean mBootCompleted; Loading Loading @@ -249,6 +251,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { case MSG_REPORT_EMERGENCY_CALL_ACTION: handleReportEmergencyCallAction(); break; case MSG_STARTED_GOING_TO_SLEEP: handleStartedGoingToSleep(msg.arg1); break; case MSG_FINISHED_GOING_TO_SLEEP: handleFinishedGoingToSleep(msg.arg1); break; Loading Loading @@ -884,19 +889,32 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } } protected void handleFinishedGoingToSleep(int arg1) { protected void handleStartedGoingToSleep(int arg1) { clearFingerprintRecognized(); final int count = mCallbacks.size(); for (int i = 0; i < count; i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { cb.onFinishedGoingToSleep(arg1); cb.onStartedGoingToSleep(arg1); } } mGoingToSleep = true; mFingerprintAlreadyAuthenticated = false; updateFingerprintListeningState(); } protected void handleFinishedGoingToSleep(int arg1) { mGoingToSleep = false; final int count = mCallbacks.size(); for (int i = 0; i < count; i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { cb.onFinishedGoingToSleep(arg1); } } updateFingerprintListeningState(); } private void handleScreenTurnedOn() { final int count = mCallbacks.size(); for (int i = 0; i < count; i++) { Loading Loading @@ -1032,8 +1050,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } private boolean shouldListenForFingerprint() { return (mKeyguardIsVisible || !mDeviceInteractive || mBouncer) && !mSwitchingUser && !mFingerprintAlreadyAuthenticated && !isFingerprintDisabled(getCurrentUser()); return (mKeyguardIsVisible || !mDeviceInteractive || mBouncer || mGoingToSleep) && !mSwitchingUser && !mFingerprintAlreadyAuthenticated && !isFingerprintDisabled(getCurrentUser()); } private void startListeningForFingerprint() { Loading Loading @@ -1605,6 +1624,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { mHandler.sendEmptyMessage(MSG_STARTED_WAKING_UP); } public void dispatchStartedGoingToSleep(int why) { mHandler.sendMessage(mHandler.obtainMessage(MSG_STARTED_GOING_TO_SLEEP, why, 0)); } public void dispatchFinishedGoingToSleep(int why) { synchronized(this) { mDeviceInteractive = false; Loading @@ -1630,6 +1653,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { return mDeviceInteractive; } public boolean isGoingToSleep() { return mGoingToSleep; } /** * Find the next SubscriptionId for a SIM in the given state, favoring lower slot numbers first. * @param state Loading
packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java +6 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,12 @@ public class KeyguardUpdateMonitorCallback { */ public void onStartedWakingUp() { } /** * Called when the device has started going to sleep. * @param why see {@link #onFinishedGoingToSleep(int)} */ public void onStartedGoingToSleep(int why) { } /** * Called when the device has finished going to sleep. * @param why either {@link WindowManagerPolicy#OFF_BECAUSE_OF_ADMIN}, Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +1 −0 Original line number Diff line number Diff line Loading @@ -679,6 +679,7 @@ public class KeyguardViewMediator extends SystemUI { playSounds(true); } } KeyguardUpdateMonitor.getInstance(mContext).dispatchStartedGoingToSleep(why); notifyStartedGoingToSleep(); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java +26 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,8 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback { private KeyguardViewMediator mKeyguardViewMediator; private ScrimController mScrimController; private PhoneStatusBar mPhoneStatusBar; private boolean mGoingToSleep; private int mPendingAuthenticatedUserId = -1; public FingerprintUnlockController(Context context, StatusBarWindowManager statusBarWindowManager, Loading Loading @@ -161,6 +163,10 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback { @Override public void onFingerprintAuthenticated(int userId) { if (mUpdateMonitor.isGoingToSleep()) { mPendingAuthenticatedUserId = userId; return; } boolean wasDeviceInteractive = mUpdateMonitor.isDeviceInteractive(); mMode = calculateMode(); if (!wasDeviceInteractive) { Loading Loading @@ -205,6 +211,26 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback { mPhoneStatusBar.notifyFpAuthModeChanged(); } @Override public void onStartedGoingToSleep(int why) { mPendingAuthenticatedUserId = -1; } @Override public void onFinishedGoingToSleep(int why) { if (mPendingAuthenticatedUserId != -1) { // Post this to make sure it's executed after the device is fully locked. mHandler.post(new Runnable() { @Override public void run() { onFingerprintAuthenticated(mPendingAuthenticatedUserId); } }); } mPendingAuthenticatedUserId = -1; } public int getMode() { return mMode; } Loading