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

Commit 2aad7ee2 authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

More fingerprint API's for 3rd party apps

- Make isHardwareAvailable public
- Add hasEnrolledFingerprints so apps can check whether to show
fingerprint UI or not.

Change-Id: Iaefd5e9e68bf3bee8305574dc1477ea9bc72b30a
parent 250dd262
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -13768,6 +13768,8 @@ package android.hardware.fingerprint {
  public class FingerprintManager {
    method public void authenticate(android.hardware.fingerprint.FingerprintManager.CryptoObject, android.os.CancellationSignal, android.hardware.fingerprint.FingerprintManager.AuthenticationCallback, int);
    method public boolean hasEnrolledFingerprints();
    method public boolean isHardwareDetected();
    field public static final int FINGERPRINT_ACQUIRED_GOOD = 0; // 0x0
    field public static final int FINGERPRINT_ACQUIRED_IMAGER_DIRTY = 3; // 0x3
    field public static final int FINGERPRINT_ACQUIRED_INSUFFICIENT = 2; // 0x2
+2 −0
Original line number Diff line number Diff line
@@ -14064,6 +14064,8 @@ package android.hardware.fingerprint {
  public class FingerprintManager {
    method public void authenticate(android.hardware.fingerprint.FingerprintManager.CryptoObject, android.os.CancellationSignal, android.hardware.fingerprint.FingerprintManager.AuthenticationCallback, int);
    method public boolean hasEnrolledFingerprints();
    method public boolean isHardwareDetected();
    field public static final int FINGERPRINT_ACQUIRED_GOOD = 0; // 0x0
    field public static final int FINGERPRINT_ACQUIRED_IMAGER_DIRTY = 3; // 0x3
    field public static final int FINGERPRINT_ACQUIRED_INSUFFICIENT = 2; // 0x2
+27 −4
Original line number Diff line number Diff line
@@ -535,9 +535,9 @@ public class FingerprintManager {
     *
     * @hide
     */
    public List<Fingerprint> getEnrolledFingerprints() {
    public List<Fingerprint> getEnrolledFingerprints(int userId) {
        if (mService != null) try {
            return mService.getEnrolledFingerprints(getCurrentUserId());
            return mService.getEnrolledFingerprints(userId);
        } catch (RemoteException e) {
            Log.v(TAG, "Remote exception in getEnrolledFingerprints: ", e);
        }
@@ -545,11 +545,34 @@ public class FingerprintManager {
    }

    /**
     * Determine if fingerprint hardware is present and functional.
     * @return true if hardware is present and functional, false otherwise.
     * Obtain the list of enrolled fingerprints templates.
     * @return list of current fingerprint items
     *
     * @hide
     */
    public List<Fingerprint> getEnrolledFingerprints() {
        return getEnrolledFingerprints(UserHandle.myUserId());
    }

    /**
     * Determine if there is at least one fingerprint enrolled.
     *
     * @return true if at least one fingerprint is enrolled, false otherwise
     */
    public boolean hasEnrolledFingerprints() {
        if (mService != null) try {
            return mService.hasEnrolledFingerprints(UserHandle.myUserId());
        } catch (RemoteException e) {
            Log.v(TAG, "Remote exception in getEnrolledFingerprints: ", e);
        }
        return false;
    }

    /**
     * Determine if fingerprint hardware is present and functional.
     *
     * @return true if hardware is present and functional, false otherwise.
     */
    public boolean isHardwareDetected() {
        if (mService != null) {
            try {
+3 −0
Original line number Diff line number Diff line
@@ -54,6 +54,9 @@ interface IFingerprintService {
    // Get a pre-enrollment authentication token
    long preEnroll(IBinder token);

    // Determine if a user has at least one enrolled fingerprint
    boolean hasEnrolledFingerprints(int groupId);

    // Gets the number of hardware devices
    // int getHardwareDeviceCount();

+3 −10
Original line number Diff line number Diff line
@@ -783,21 +783,14 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {

    private void startListeningForFingerprint() {
        if (DEBUG) Log.v(TAG, "startListeningForFingerprint()");
        final int userId;
        try {
            userId = ActivityManagerNative.getDefault().getCurrentUser().id;
        } catch (RemoteException e) {
            Log.e(TAG, "Failed to get current user id: ", e);
            return;
        }
        int userId = ActivityManager.getCurrentUser();
        if (mFpm != null && mFpm.isHardwareDetected() && !isFingerprintDisabled(userId)
                && mFpm.getEnrolledFingerprints().size() > 0) {
                && mFpm.getEnrolledFingerprints(userId).size() > 0) {
            if (mFingerprintCancelSignal != null) {
                mFingerprintCancelSignal.cancel();
            }
            mFingerprintCancelSignal = new CancellationSignal();
            mFpm.authenticate(null, mFingerprintCancelSignal, mAuthenticationCallback, 0,
                    ActivityManager.getCurrentUser());
            mFpm.authenticate(null, mFingerprintCancelSignal, mAuthenticationCallback, 0, userId);
            setFingerprintRunningDetectionRunning(true);
        }
    }
Loading