Loading policy/src/com/android/internal/policy/impl/BiometricSensorUnlock.java +0 −3 Original line number Diff line number Diff line Loading @@ -19,9 +19,6 @@ package com.android.internal.policy.impl; import android.view.View; interface BiometricSensorUnlock { // Returns 'true' if the biometric sensor is available and is selected by user. public boolean installedAndSelected(); // Returns 'true' if the biometric sensor has started its unlock procedure but has not yet // accepted or rejected the user. public boolean isRunning(); Loading policy/src/com/android/internal/policy/impl/FaceUnlock.java +55 −74 Original line number Diff line number Diff line Loading @@ -77,12 +77,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { mHandler = new Handler(this); } // Indicates whether FaceLock is in use public boolean installedAndSelected() { return (mLockPatternUtils.usingBiometricWeak() && mLockPatternUtils.isBiometricWeakInstalled()); } public boolean isRunning() { return mServiceRunning; } Loading @@ -106,7 +100,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { // Tells FaceLock to stop and then unbinds from the FaceLock service public boolean stop() { boolean wasRunning = false; if (installedAndSelected()) { stopUi(); if (mBoundToService) { Loading @@ -128,7 +121,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { // onDetachedFromWindow. if (DEBUG) Log.d(TAG, "Attempt to unbind from FaceLock when not bound"); } } return wasRunning; } Loading @@ -145,7 +137,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { (failedBackupAttempts >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT); if (tooManyFaceUnlockTries) Log.i(TAG, "tooManyFaceUnlockTries: " + tooManyFaceUnlockTries); if (mUpdateMonitor.getPhoneState() == TelephonyManager.CALL_STATE_IDLE && installedAndSelected() && !suppressBiometricUnlock && !tooManyFaceUnlockTries && !backupIsTimedOut) { Loading @@ -170,16 +161,12 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { // Takes care of FaceLock area when layout is created public void initializeAreaView(View topView) { if (installedAndSelected()) { mAreaView = topView.findViewById(R.id.faceLockAreaView); if (mAreaView == null) { Log.e(TAG, "Layout does not have areaView and FaceLock is enabled"); } else { show(0); } } else { mAreaView = null; // Set to null if not using FaceLock } } public void cleanUp() { Loading Loading @@ -236,7 +223,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { // Binds to FaceLock service. This call does not tell it to start, but it causes the service // to call the onServiceConnected callback, which then starts FaceLock. private void bind() { if (installedAndSelected()) { if (!mBoundToService) { if (DEBUG) Log.d(TAG, "before bind to FaceLock service"); mContext.bindService(new Intent(IFaceLockInterface.class.getName()), Loading @@ -249,7 +235,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { Log.w(TAG, "Attempt to bind to FaceLock when already bound"); } } } private ServiceConnection mConnection = new ServiceConnection() { // Completes connection, registers callback and starts FaceLock when service is bound Loading Loading @@ -289,7 +274,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { // Tells the FaceLock service to start displaying its UI and perform recognition private void startUi(IBinder windowToken, int x, int y, int w, int h) { if (installedAndSelected()) { synchronized (mServiceRunningLock) { if (!mServiceRunning) { if (DEBUG) Log.d(TAG, "Starting FaceLock"); Loading @@ -306,11 +290,9 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { } } } } // Tells the FaceLock service to stop displaying its UI and stop recognition private void stopUi() { if (installedAndSelected()) { // Note that attempting to stop FaceLock when it's not running is not an issue. // FaceLock can return, which stops it and then we try to stop it when the // screen is turned off. That's why we check. Loading @@ -326,7 +308,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { } } } } // Implements the FaceLock service callback interface defined in AIDL private final IFaceLockCallback mFaceLockCallback = new IFaceLockCallback.Stub() { Loading policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java +72 −35 Original line number Diff line number Diff line Loading @@ -111,7 +111,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase { private boolean mRequiresSim; // True if the biometric unlock should not be displayed. For example, if there is an overlay on // lockscreen or the user is plugging in / unplugging the device. private boolean mSupressBiometricUnlock; private boolean mSuppressBiometricUnlock; //True if a dialog is currently displaying on top of this window //Unlike other overlays, this does not close with a power button cycle private boolean mHasDialog = false; Loading Loading @@ -310,15 +310,17 @@ public class LockPatternKeyguardView extends KeyguardViewBase { } public void takeEmergencyCallAction() { mSupressBiometricUnlock = true; mSuppressBiometricUnlock = true; if (mBiometricUnlock.installedAndSelected() && mBiometricUnlock.isRunning()) { if (mBiometricUnlock != null) { if (mBiometricUnlock.isRunning()) { // Continue covering backup lock until dialer comes up or call is resumed mBiometricUnlock.show(BIOMETRIC_AREA_EMERGENCY_DIALER_TIMEOUT); } // The biometric unlock must be stopped if it is running when emergency call is pressed // We must ensure the biometric unlock is stopped when emergency call is pressed mBiometricUnlock.stop(); } pokeWakelock(EMERGENCY_CALL_TIMEOUT); if (TelephonyManager.getDefault().getCallState() Loading Loading @@ -410,6 +412,12 @@ public class LockPatternKeyguardView extends KeyguardViewBase { } }; // Indicates whether a biometric unlock method is in use private boolean isBiometricUnlockInstalledAndSelected() { return (mLockPatternUtils.usingBiometricWeak() && mLockPatternUtils.isBiometricWeakInstalled()); } /** * @param context Used to inflate, and create views. * @param callback Keyguard callback object for pokewakelock(), etc. Loading @@ -423,18 +431,23 @@ public class LockPatternKeyguardView extends KeyguardViewBase { LockPatternUtils lockPatternUtils, KeyguardWindowController controller) { super(context, callback); mBiometricUnlock = new FaceUnlock(context, updateMonitor, lockPatternUtils, mKeyguardScreenCallback); mConfiguration = context.getResources().getConfiguration(); mEnableFallback = false; mRequiresSim = TextUtils.isEmpty(SystemProperties.get("keyguard.no_require_sim")); mUpdateMonitor = updateMonitor; mLockPatternUtils = lockPatternUtils; mWindowController = controller; mSupressBiometricUnlock = false; mSuppressBiometricUnlock = false; mPluggedIn = mUpdateMonitor.isDevicePluggedIn(); mScreenOn = ((PowerManager)context.getSystemService(Context.POWER_SERVICE)).isScreenOn(); // If the biometric unlock is not being used, we don't bother constructing it. Then we can // simply check if it is null when deciding whether we should make calls to it. if (isBiometricUnlockInstalledAndSelected()) { mBiometricUnlock = new FaceUnlock(context, updateMonitor, lockPatternUtils, mKeyguardScreenCallback); } mUpdateMonitor.registerInfoCallback(mInfoCallback); /** Loading Loading @@ -530,8 +543,11 @@ public class LockPatternKeyguardView extends KeyguardViewBase { if (DEBUG) Log.d(TAG, "screen off"); mScreenOn = false; mForgotPattern = false; mSupressBiometricUnlock = mUpdateMonitor.getPhoneState() != TelephonyManager.CALL_STATE_IDLE || mHasDialog; if (mBiometricUnlock != null) { mSuppressBiometricUnlock = mUpdateMonitor.getPhoneState() != TelephonyManager.CALL_STATE_IDLE || mHasDialog; } // Emulate activity life-cycle for both lock and unlock screen. if (mLockScreen != null) { Loading @@ -543,9 +559,11 @@ public class LockPatternKeyguardView extends KeyguardViewBase { saveWidgetState(); if (mBiometricUnlock != null) { // The biometric unlock must stop when screen turns off. mBiometricUnlock.stop(); } } @Override public void onScreenTurnedOn() { Loading @@ -561,7 +579,9 @@ public class LockPatternKeyguardView extends KeyguardViewBase { restoreWidgetState(); if (startBiometricUnlock) mBiometricUnlock.start(mSupressBiometricUnlock); if (mBiometricUnlock != null && startBiometricUnlock) { mBiometricUnlock.start(mSuppressBiometricUnlock); } } private void saveWidgetState() { Loading @@ -587,6 +607,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase { @Override public void onWindowFocusChanged (boolean hasWindowFocus) { if (DEBUG) Log.d(TAG, hasWindowFocus ? "focused" : "unfocused"); boolean startBiometricUnlock = false; // Start the biometric unlock if and only if the screen is both on and focused synchronized(mBiometricUnlockStartupLock) { Loading @@ -594,12 +615,16 @@ public class LockPatternKeyguardView extends KeyguardViewBase { mWindowFocused = hasWindowFocus; } if (!hasWindowFocus) { mSupressBiometricUnlock = true; if (mBiometricUnlock != null) { mSuppressBiometricUnlock = true; mBiometricUnlock.stop(); mBiometricUnlock.hide(); } } else { mHasDialog = false; if (startBiometricUnlock) mBiometricUnlock.start(mSupressBiometricUnlock); if (mBiometricUnlock != null && startBiometricUnlock) { mBiometricUnlock.start(mSuppressBiometricUnlock); } } } Loading @@ -613,7 +638,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase { ((KeyguardScreen) mUnlockScreen).onResume(); } if (!mBiometricUnlock.installedAndSelected() || mSupressBiometricUnlock) { if (mBiometricUnlock != null && mSuppressBiometricUnlock) { mBiometricUnlock.hide(); } } Loading Loading @@ -648,9 +673,11 @@ public class LockPatternKeyguardView extends KeyguardViewBase { removeCallbacks(mRecreateRunnable); if (mBiometricUnlock != null) { // When view is hidden, we need to stop the biometric unlock // e.g., when device becomes unlocked mBiometricUnlock.stop(); } super.onDetachedFromWindow(); } Loading @@ -676,10 +703,11 @@ public class LockPatternKeyguardView extends KeyguardViewBase { // suppressed. // // However, if the biometric unlock is already running, we do not want to interrupt it. if (mPluggedIn != pluggedIn && !mBiometricUnlock.isRunning()) { if (mBiometricUnlock != null && mPluggedIn != pluggedIn && !mBiometricUnlock.isRunning()) { mBiometricUnlock.stop(); mBiometricUnlock.hide(); mSupressBiometricUnlock = true; mSuppressBiometricUnlock = true; } mPluggedIn = pluggedIn; } Loading @@ -695,8 +723,8 @@ public class LockPatternKeyguardView extends KeyguardViewBase { @Override public void onPhoneStateChanged(int phoneState) { if (DEBUG) Log.d(TAG, "phone state: " + phoneState); if(phoneState == TelephonyManager.CALL_STATE_RINGING) { mSupressBiometricUnlock = true; if (mBiometricUnlock != null && phoneState == TelephonyManager.CALL_STATE_RINGING) { mSuppressBiometricUnlock = true; mBiometricUnlock.stop(); mBiometricUnlock.hide(); } Loading @@ -704,7 +732,9 @@ public class LockPatternKeyguardView extends KeyguardViewBase { @Override public void onUserChanged(int userId) { if (mBiometricUnlock != null) { mBiometricUnlock.stop(); } mLockPatternUtils.setCurrentUser(userId); updateScreen(getInitialMode(), true); } Loading Loading @@ -767,8 +797,10 @@ public class LockPatternKeyguardView extends KeyguardViewBase { mUnlockScreen = null; } mUpdateMonitor.removeCallback(this); if (mBiometricUnlock != null) { mBiometricUnlock.cleanUp(); } } private boolean isSecure() { UnlockMode unlockMode = getUnlockMode(); Loading Loading @@ -817,10 +849,13 @@ public class LockPatternKeyguardView extends KeyguardViewBase { final UnlockMode unlockMode = getUnlockMode(); if (mode == Mode.UnlockScreen && unlockMode != UnlockMode.Unknown) { if (force || mUnlockScreen == null || unlockMode != mUnlockScreenMode) { boolean restartBiometricUnlock = mBiometricUnlock.stop(); boolean restartBiometricUnlock = false; if (mBiometricUnlock != null) { restartBiometricUnlock = mBiometricUnlock.stop(); } recreateUnlockScreen(unlockMode); if (restartBiometricUnlock) { mBiometricUnlock.start(mSupressBiometricUnlock); if (mBiometricUnlock != null && restartBiometricUnlock) { mBiometricUnlock.start(mSuppressBiometricUnlock); } } } Loading Loading @@ -934,8 +969,10 @@ public class LockPatternKeyguardView extends KeyguardViewBase { throw new IllegalArgumentException("unknown unlock mode " + unlockMode); } initializeTransportControlView(unlockView); // Only shows view if the biometric unlock is enabled if (mBiometricUnlock != null) { mBiometricUnlock.initializeAreaView(unlockView); } mUnlockScreenMode = unlockMode; return unlockView; Loading Loading
policy/src/com/android/internal/policy/impl/BiometricSensorUnlock.java +0 −3 Original line number Diff line number Diff line Loading @@ -19,9 +19,6 @@ package com.android.internal.policy.impl; import android.view.View; interface BiometricSensorUnlock { // Returns 'true' if the biometric sensor is available and is selected by user. public boolean installedAndSelected(); // Returns 'true' if the biometric sensor has started its unlock procedure but has not yet // accepted or rejected the user. public boolean isRunning(); Loading
policy/src/com/android/internal/policy/impl/FaceUnlock.java +55 −74 Original line number Diff line number Diff line Loading @@ -77,12 +77,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { mHandler = new Handler(this); } // Indicates whether FaceLock is in use public boolean installedAndSelected() { return (mLockPatternUtils.usingBiometricWeak() && mLockPatternUtils.isBiometricWeakInstalled()); } public boolean isRunning() { return mServiceRunning; } Loading @@ -106,7 +100,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { // Tells FaceLock to stop and then unbinds from the FaceLock service public boolean stop() { boolean wasRunning = false; if (installedAndSelected()) { stopUi(); if (mBoundToService) { Loading @@ -128,7 +121,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { // onDetachedFromWindow. if (DEBUG) Log.d(TAG, "Attempt to unbind from FaceLock when not bound"); } } return wasRunning; } Loading @@ -145,7 +137,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { (failedBackupAttempts >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT); if (tooManyFaceUnlockTries) Log.i(TAG, "tooManyFaceUnlockTries: " + tooManyFaceUnlockTries); if (mUpdateMonitor.getPhoneState() == TelephonyManager.CALL_STATE_IDLE && installedAndSelected() && !suppressBiometricUnlock && !tooManyFaceUnlockTries && !backupIsTimedOut) { Loading @@ -170,16 +161,12 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { // Takes care of FaceLock area when layout is created public void initializeAreaView(View topView) { if (installedAndSelected()) { mAreaView = topView.findViewById(R.id.faceLockAreaView); if (mAreaView == null) { Log.e(TAG, "Layout does not have areaView and FaceLock is enabled"); } else { show(0); } } else { mAreaView = null; // Set to null if not using FaceLock } } public void cleanUp() { Loading Loading @@ -236,7 +223,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { // Binds to FaceLock service. This call does not tell it to start, but it causes the service // to call the onServiceConnected callback, which then starts FaceLock. private void bind() { if (installedAndSelected()) { if (!mBoundToService) { if (DEBUG) Log.d(TAG, "before bind to FaceLock service"); mContext.bindService(new Intent(IFaceLockInterface.class.getName()), Loading @@ -249,7 +235,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { Log.w(TAG, "Attempt to bind to FaceLock when already bound"); } } } private ServiceConnection mConnection = new ServiceConnection() { // Completes connection, registers callback and starts FaceLock when service is bound Loading Loading @@ -289,7 +274,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { // Tells the FaceLock service to start displaying its UI and perform recognition private void startUi(IBinder windowToken, int x, int y, int w, int h) { if (installedAndSelected()) { synchronized (mServiceRunningLock) { if (!mServiceRunning) { if (DEBUG) Log.d(TAG, "Starting FaceLock"); Loading @@ -306,11 +290,9 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { } } } } // Tells the FaceLock service to stop displaying its UI and stop recognition private void stopUi() { if (installedAndSelected()) { // Note that attempting to stop FaceLock when it's not running is not an issue. // FaceLock can return, which stops it and then we try to stop it when the // screen is turned off. That's why we check. Loading @@ -326,7 +308,6 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { } } } } // Implements the FaceLock service callback interface defined in AIDL private final IFaceLockCallback mFaceLockCallback = new IFaceLockCallback.Stub() { Loading
policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java +72 −35 Original line number Diff line number Diff line Loading @@ -111,7 +111,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase { private boolean mRequiresSim; // True if the biometric unlock should not be displayed. For example, if there is an overlay on // lockscreen or the user is plugging in / unplugging the device. private boolean mSupressBiometricUnlock; private boolean mSuppressBiometricUnlock; //True if a dialog is currently displaying on top of this window //Unlike other overlays, this does not close with a power button cycle private boolean mHasDialog = false; Loading Loading @@ -310,15 +310,17 @@ public class LockPatternKeyguardView extends KeyguardViewBase { } public void takeEmergencyCallAction() { mSupressBiometricUnlock = true; mSuppressBiometricUnlock = true; if (mBiometricUnlock.installedAndSelected() && mBiometricUnlock.isRunning()) { if (mBiometricUnlock != null) { if (mBiometricUnlock.isRunning()) { // Continue covering backup lock until dialer comes up or call is resumed mBiometricUnlock.show(BIOMETRIC_AREA_EMERGENCY_DIALER_TIMEOUT); } // The biometric unlock must be stopped if it is running when emergency call is pressed // We must ensure the biometric unlock is stopped when emergency call is pressed mBiometricUnlock.stop(); } pokeWakelock(EMERGENCY_CALL_TIMEOUT); if (TelephonyManager.getDefault().getCallState() Loading Loading @@ -410,6 +412,12 @@ public class LockPatternKeyguardView extends KeyguardViewBase { } }; // Indicates whether a biometric unlock method is in use private boolean isBiometricUnlockInstalledAndSelected() { return (mLockPatternUtils.usingBiometricWeak() && mLockPatternUtils.isBiometricWeakInstalled()); } /** * @param context Used to inflate, and create views. * @param callback Keyguard callback object for pokewakelock(), etc. Loading @@ -423,18 +431,23 @@ public class LockPatternKeyguardView extends KeyguardViewBase { LockPatternUtils lockPatternUtils, KeyguardWindowController controller) { super(context, callback); mBiometricUnlock = new FaceUnlock(context, updateMonitor, lockPatternUtils, mKeyguardScreenCallback); mConfiguration = context.getResources().getConfiguration(); mEnableFallback = false; mRequiresSim = TextUtils.isEmpty(SystemProperties.get("keyguard.no_require_sim")); mUpdateMonitor = updateMonitor; mLockPatternUtils = lockPatternUtils; mWindowController = controller; mSupressBiometricUnlock = false; mSuppressBiometricUnlock = false; mPluggedIn = mUpdateMonitor.isDevicePluggedIn(); mScreenOn = ((PowerManager)context.getSystemService(Context.POWER_SERVICE)).isScreenOn(); // If the biometric unlock is not being used, we don't bother constructing it. Then we can // simply check if it is null when deciding whether we should make calls to it. if (isBiometricUnlockInstalledAndSelected()) { mBiometricUnlock = new FaceUnlock(context, updateMonitor, lockPatternUtils, mKeyguardScreenCallback); } mUpdateMonitor.registerInfoCallback(mInfoCallback); /** Loading Loading @@ -530,8 +543,11 @@ public class LockPatternKeyguardView extends KeyguardViewBase { if (DEBUG) Log.d(TAG, "screen off"); mScreenOn = false; mForgotPattern = false; mSupressBiometricUnlock = mUpdateMonitor.getPhoneState() != TelephonyManager.CALL_STATE_IDLE || mHasDialog; if (mBiometricUnlock != null) { mSuppressBiometricUnlock = mUpdateMonitor.getPhoneState() != TelephonyManager.CALL_STATE_IDLE || mHasDialog; } // Emulate activity life-cycle for both lock and unlock screen. if (mLockScreen != null) { Loading @@ -543,9 +559,11 @@ public class LockPatternKeyguardView extends KeyguardViewBase { saveWidgetState(); if (mBiometricUnlock != null) { // The biometric unlock must stop when screen turns off. mBiometricUnlock.stop(); } } @Override public void onScreenTurnedOn() { Loading @@ -561,7 +579,9 @@ public class LockPatternKeyguardView extends KeyguardViewBase { restoreWidgetState(); if (startBiometricUnlock) mBiometricUnlock.start(mSupressBiometricUnlock); if (mBiometricUnlock != null && startBiometricUnlock) { mBiometricUnlock.start(mSuppressBiometricUnlock); } } private void saveWidgetState() { Loading @@ -587,6 +607,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase { @Override public void onWindowFocusChanged (boolean hasWindowFocus) { if (DEBUG) Log.d(TAG, hasWindowFocus ? "focused" : "unfocused"); boolean startBiometricUnlock = false; // Start the biometric unlock if and only if the screen is both on and focused synchronized(mBiometricUnlockStartupLock) { Loading @@ -594,12 +615,16 @@ public class LockPatternKeyguardView extends KeyguardViewBase { mWindowFocused = hasWindowFocus; } if (!hasWindowFocus) { mSupressBiometricUnlock = true; if (mBiometricUnlock != null) { mSuppressBiometricUnlock = true; mBiometricUnlock.stop(); mBiometricUnlock.hide(); } } else { mHasDialog = false; if (startBiometricUnlock) mBiometricUnlock.start(mSupressBiometricUnlock); if (mBiometricUnlock != null && startBiometricUnlock) { mBiometricUnlock.start(mSuppressBiometricUnlock); } } } Loading @@ -613,7 +638,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase { ((KeyguardScreen) mUnlockScreen).onResume(); } if (!mBiometricUnlock.installedAndSelected() || mSupressBiometricUnlock) { if (mBiometricUnlock != null && mSuppressBiometricUnlock) { mBiometricUnlock.hide(); } } Loading Loading @@ -648,9 +673,11 @@ public class LockPatternKeyguardView extends KeyguardViewBase { removeCallbacks(mRecreateRunnable); if (mBiometricUnlock != null) { // When view is hidden, we need to stop the biometric unlock // e.g., when device becomes unlocked mBiometricUnlock.stop(); } super.onDetachedFromWindow(); } Loading @@ -676,10 +703,11 @@ public class LockPatternKeyguardView extends KeyguardViewBase { // suppressed. // // However, if the biometric unlock is already running, we do not want to interrupt it. if (mPluggedIn != pluggedIn && !mBiometricUnlock.isRunning()) { if (mBiometricUnlock != null && mPluggedIn != pluggedIn && !mBiometricUnlock.isRunning()) { mBiometricUnlock.stop(); mBiometricUnlock.hide(); mSupressBiometricUnlock = true; mSuppressBiometricUnlock = true; } mPluggedIn = pluggedIn; } Loading @@ -695,8 +723,8 @@ public class LockPatternKeyguardView extends KeyguardViewBase { @Override public void onPhoneStateChanged(int phoneState) { if (DEBUG) Log.d(TAG, "phone state: " + phoneState); if(phoneState == TelephonyManager.CALL_STATE_RINGING) { mSupressBiometricUnlock = true; if (mBiometricUnlock != null && phoneState == TelephonyManager.CALL_STATE_RINGING) { mSuppressBiometricUnlock = true; mBiometricUnlock.stop(); mBiometricUnlock.hide(); } Loading @@ -704,7 +732,9 @@ public class LockPatternKeyguardView extends KeyguardViewBase { @Override public void onUserChanged(int userId) { if (mBiometricUnlock != null) { mBiometricUnlock.stop(); } mLockPatternUtils.setCurrentUser(userId); updateScreen(getInitialMode(), true); } Loading Loading @@ -767,8 +797,10 @@ public class LockPatternKeyguardView extends KeyguardViewBase { mUnlockScreen = null; } mUpdateMonitor.removeCallback(this); if (mBiometricUnlock != null) { mBiometricUnlock.cleanUp(); } } private boolean isSecure() { UnlockMode unlockMode = getUnlockMode(); Loading Loading @@ -817,10 +849,13 @@ public class LockPatternKeyguardView extends KeyguardViewBase { final UnlockMode unlockMode = getUnlockMode(); if (mode == Mode.UnlockScreen && unlockMode != UnlockMode.Unknown) { if (force || mUnlockScreen == null || unlockMode != mUnlockScreenMode) { boolean restartBiometricUnlock = mBiometricUnlock.stop(); boolean restartBiometricUnlock = false; if (mBiometricUnlock != null) { restartBiometricUnlock = mBiometricUnlock.stop(); } recreateUnlockScreen(unlockMode); if (restartBiometricUnlock) { mBiometricUnlock.start(mSupressBiometricUnlock); if (mBiometricUnlock != null && restartBiometricUnlock) { mBiometricUnlock.start(mSuppressBiometricUnlock); } } } Loading Loading @@ -934,8 +969,10 @@ public class LockPatternKeyguardView extends KeyguardViewBase { throw new IllegalArgumentException("unknown unlock mode " + unlockMode); } initializeTransportControlView(unlockView); // Only shows view if the biometric unlock is enabled if (mBiometricUnlock != null) { mBiometricUnlock.initializeAreaView(unlockView); } mUnlockScreenMode = unlockMode; return unlockView; Loading