Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c2512c4 authored by Andy Mast's avatar Andy Mast
Browse files

Keyguard: Authenticate with fingerprint

Change-Id: Id547339fc1b6e06b3a9d8f6906258872986df3f1

Conflicts:
	packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
parent 6dd431d0
Loading
Loading
Loading
Loading
+30 −4
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ import com.android.internal.telephony.IccCardConstants;
import com.android.internal.telephony.IccCardConstants.State;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.widget.LockPatternUtils;
import com.google.android.collect.Lists;

import java.lang.ref.WeakReference;
@@ -171,6 +172,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {

    private boolean mScreenOn;

    private LockPatternUtils mLockPatternUtils;

    private int mNumPhones = 0;
    private SubscriptionManager mSubscriptionManager;
    private List<SubscriptionInfo> mSubscriptionInfo;
@@ -359,7 +362,13 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
    }

    private void handleFingerprintProcessed(int fingerprintId) {
        if (fingerprintId == 0) return; // not a valid fingerprint
        if (fingerprintId == 0) {
            // Not a valid fingerprint, start another authenticate call to try again
            FingerprintManager fpm =
                    (FingerprintManager) mContext.getSystemService(Context.FINGERPRINT_SERVICE);
            fpm.authenticate();
            return; // not a valid fingerprint
        }

        final int userId;
        try {
@@ -712,6 +721,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
    }

    protected void handleScreenTurnedOn() {
        startFingerAuthIfUsingFingerprint();
        final int count = mCallbacks.size();
        for (int i = 0; i < count; i++) {
            KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
@@ -722,6 +732,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
    }

    protected void handleScreenTurnedOff(int arg1) {
        stopAuthenticatingFingerprint();
        clearFingerprintRecognized();
        final int count = mCallbacks.size();
        for (int i = 0; i < count; i++) {
@@ -909,9 +920,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
        TrustManager trustManager = (TrustManager) context.getSystemService(Context.TRUST_SERVICE);
        trustManager.registerTrustListener(this);

        FingerprintManager fpm;
        fpm = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
        fpm.startListening(mFingerprintManagerReceiver);
        mLockPatternUtils = new LockPatternUtils(mContext);
        startFingerAuthIfUsingFingerprint();
    }

    private boolean isDeviceProvisionedInSettingsDb() {
@@ -1527,6 +1537,22 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
        mFailedBiometricUnlockAttempts = 0;
    }

    public void startFingerAuthIfUsingFingerprint() {
        if (mLockPatternUtils.usingFingerprint()) {
            FingerprintManager fpm =
                    (FingerprintManager) mContext.getSystemService(Context.FINGERPRINT_SERVICE);
            fpm.startListening(mFingerprintManagerReceiver);
            fpm.authenticate();
        }
    }

    public void stopAuthenticatingFingerprint() {
        FingerprintManager fpm =
                (FingerprintManager) mContext.getSystemService(Context.FINGERPRINT_SERVICE);
        fpm.cancel();
        fpm.stopListening();
    }

    public void clearFingerprintRecognized() {
        mUserFingerprintRecognized.clear();
    }
+2 −4
Original line number Diff line number Diff line
@@ -468,11 +468,8 @@ public class KeyguardViewMediator extends SystemUI {
        }

        public void onFingerprintRecognized(int userId) {
            if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
            mViewMediatorCallback.keyguardDone(true);
            }
        };

    };

    ViewMediatorCallback mViewMediatorCallback = new ViewMediatorCallback() {
@@ -1328,6 +1325,7 @@ public class KeyguardViewMediator extends SystemUI {
            mUpdateMonitor.clearFailedUnlockAttempts();
        }
        mUpdateMonitor.clearFingerprintRecognized();
        mUpdateMonitor.stopAuthenticatingFingerprint();

        if (mExitSecureCallback != null) {
            try {