diff options
| author | 2015-04-15 22:56:05 +0000 | |
|---|---|---|
| committer | 2015-04-15 22:56:09 +0000 | |
| commit | 053dee79283a7c7c547e9a7c162eaef388f529d4 (patch) | |
| tree | 7b6da20c4abf7914f8b2796302a15924df45eb2a | |
| parent | 7a18d08252f84b13665d47311fdaeeb78eb9969a (diff) | |
| parent | 2aad7ee245857a46aae305fefc4e3c1bcdd4a586 (diff) | |
Merge "More fingerprint API's for 3rd party apps"
6 files changed, 49 insertions, 14 deletions
diff --git a/api/current.txt b/api/current.txt index 933fa0801675..abd30813eb74 100644 --- a/api/current.txt +++ b/api/current.txt @@ -13771,6 +13771,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 diff --git a/api/system-current.txt b/api/system-current.txt index 15c00f4b2c9c..fae1aa4b653d 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -14067,6 +14067,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 diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java index b757a9acb782..31a2647d0b3e 100644 --- a/core/java/android/hardware/fingerprint/FingerprintManager.java +++ b/core/java/android/hardware/fingerprint/FingerprintManager.java @@ -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 { diff --git a/core/java/android/hardware/fingerprint/IFingerprintService.aidl b/core/java/android/hardware/fingerprint/IFingerprintService.aidl index 6fe72d55a446..51a0e4ce2b9a 100644 --- a/core/java/android/hardware/fingerprint/IFingerprintService.aidl +++ b/core/java/android/hardware/fingerprint/IFingerprintService.aidl @@ -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(); diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java index a02fb4a6fd97..50c9f2d9aa38 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -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); } } diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java index 90e69d7c9812..0ca0c0e5ad27 100644 --- a/services/core/java/com/android/server/fingerprint/FingerprintService.java +++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java @@ -358,6 +358,11 @@ public class FingerprintService extends SystemService { return result; } + public boolean hasEnrolledFingerprints(int groupId) { + ContentResolver resolver = mContext.getContentResolver(); + return FingerprintUtils.getFingerprintIdsForUser(resolver, groupId).length > 0; + } + void checkPermission(String permission) { getContext().enforceCallingOrSelfPermission(permission, "Must have " + permission + " permission."); @@ -572,6 +577,13 @@ public class FingerprintService extends SystemService { checkPermission(USE_FINGERPRINT); return FingerprintService.this.getEnrolledFingerprints(groupId); } + + @Override + // Binder call + public boolean hasEnrolledFingerprints(int groupId) { + checkPermission(USE_FINGERPRINT); + return FingerprintService.this.hasEnrolledFingerprints(groupId); + } } @Override |