Save the date! Android Dev Summit is coming to Mountain View, CA on November 7-8, 2018.
added in API level 23
Deprecated since API level 28

FingerprintManager

public class FingerprintManager
extends Object

java.lang.Object
   ↳ android.hardware.fingerprint.FingerprintManager


This class was deprecated in API level 28.
See BiometricPrompt which shows a system-provided dialog upon starting authentication. In a world where devices may have different types of biometric authentication, it's much more realistic to have a system-provided authentication dialog since the method may vary by vendor/device.

A class that coordinates access to the fingerprint hardware.

Instances of this class must be obtained using Context.getSystemService(Class) with the argument FingerprintManager.class or Context.getSystemService(String) with the argument Context.FINGERPRINT_SERVICE.

Requires the FEATURE_FINGERPRINT feature which can be detected using PackageManager.hasSystemFeature(String).

Summary

Nested classes

class FingerprintManager.AuthenticationCallback

This class was deprecated in API level 28. See BiometricPrompt.AuthenticationCallback  

class FingerprintManager.AuthenticationResult

This class was deprecated in API level 28. See BiometricPrompt.AuthenticationResult  

class FingerprintManager.CryptoObject

This class was deprecated in API level 28. See BiometricPrompt.CryptoObject  

Constants

int FINGERPRINT_ACQUIRED_GOOD

The image acquired was good.

int FINGERPRINT_ACQUIRED_IMAGER_DIRTY

The fingerprint image was too noisy due to suspected or detected dirt on the sensor.

int FINGERPRINT_ACQUIRED_INSUFFICIENT

The fingerprint image was too noisy to process due to a detected condition (i.e.

int FINGERPRINT_ACQUIRED_PARTIAL

Only a partial fingerprint image was detected.

int FINGERPRINT_ACQUIRED_TOO_FAST

The fingerprint image was incomplete due to quick motion.

int FINGERPRINT_ACQUIRED_TOO_SLOW

The fingerprint image was unreadable due to lack of motion.

int FINGERPRINT_ERROR_CANCELED

The operation was canceled because the fingerprint sensor is unavailable.

int FINGERPRINT_ERROR_HW_NOT_PRESENT

The device does not have a fingerprint sensor.

int FINGERPRINT_ERROR_HW_UNAVAILABLE

The hardware is unavailable.

int FINGERPRINT_ERROR_LOCKOUT

The operation was canceled because the API is locked out due to too many attempts.

int FINGERPRINT_ERROR_LOCKOUT_PERMANENT

The operation was canceled because FINGERPRINT_ERROR_LOCKOUT occurred too many times.

int FINGERPRINT_ERROR_NO_FINGERPRINTS

The user does not have any fingerprints enrolled.

int FINGERPRINT_ERROR_NO_SPACE

Error state returned for operations like enrollment; the operation cannot be completed because there's not enough storage remaining to complete the operation.

int FINGERPRINT_ERROR_TIMEOUT

Error state returned when the current request has been running too long.

int FINGERPRINT_ERROR_UNABLE_TO_PROCESS

Error state returned when the sensor was unable to process the current image.

int FINGERPRINT_ERROR_USER_CANCELED

The user canceled the operation.

int FINGERPRINT_ERROR_VENDOR

Hardware vendors may extend this list if there are conditions that do not fall under one of the above categories.

Public methods

void authenticate(FingerprintManager.CryptoObject crypto, CancellationSignal cancel, int flags, FingerprintManager.AuthenticationCallback callback, Handler handler)

This method was deprecated in API level 28. See BiometricPrompt.authenticate(CancellationSignal, Executor, BiometricPrompt.AuthenticationCallback) and BiometricPrompt.authenticate(BiometricPrompt.CryptoObject, CancellationSignal, Executor, BiometricPrompt.AuthenticationCallback)

boolean hasEnrolledFingerprints()

This method was deprecated in API level 28. See BiometricPrompt and FINGERPRINT_ERROR_NO_FINGERPRINTS

boolean isHardwareDetected()

This method was deprecated in API level 28. See BiometricPrompt and FINGERPRINT_ERROR_HW_UNAVAILABLE

Inherited methods

Constants

FINGERPRINT_ACQUIRED_GOOD

added in API level 23
public static final int FINGERPRINT_ACQUIRED_GOOD

The image acquired was good.

Constant Value: 0 (0x00000000)

FINGERPRINT_ACQUIRED_IMAGER_DIRTY

added in API level 23
public static final int FINGERPRINT_ACQUIRED_IMAGER_DIRTY

The fingerprint image was too noisy due to suspected or detected dirt on the sensor. For example, it's reasonable return this after multiple FINGERPRINT_ACQUIRED_INSUFFICIENT or actual detection of dirt on the sensor (stuck pixels, swaths, etc.). The user is expected to take action to clean the sensor when this is returned.

Constant Value: 3 (0x00000003)

FINGERPRINT_ACQUIRED_INSUFFICIENT

added in API level 23
public static final int FINGERPRINT_ACQUIRED_INSUFFICIENT

The fingerprint image was too noisy to process due to a detected condition (i.e. dry skin) or a possibly dirty sensor (See FINGERPRINT_ACQUIRED_IMAGER_DIRTY).

Constant Value: 2 (0x00000002)

FINGERPRINT_ACQUIRED_PARTIAL

added in API level 23
public static final int FINGERPRINT_ACQUIRED_PARTIAL

Only a partial fingerprint image was detected. During enrollment, the user should be informed on what needs to happen to resolve this problem, e.g. "press firmly on sensor."

Constant Value: 1 (0x00000001)

FINGERPRINT_ACQUIRED_TOO_FAST

added in API level 23
public static final int FINGERPRINT_ACQUIRED_TOO_FAST

The fingerprint image was incomplete due to quick motion. While mostly appropriate for linear array sensors, this could also happen if the finger was moved during acquisition. The user should be asked to move the finger slower (linear) or leave the finger on the sensor longer.

Constant Value: 5 (0x00000005)

FINGERPRINT_ACQUIRED_TOO_SLOW

added in API level 23
public static final int FINGERPRINT_ACQUIRED_TOO_SLOW

The fingerprint image was unreadable due to lack of motion. This is most appropriate for linear array sensors that require a swipe motion.

Constant Value: 4 (0x00000004)

FINGERPRINT_ERROR_CANCELED

added in API level 23
public static final int FINGERPRINT_ERROR_CANCELED

The operation was canceled because the fingerprint sensor is unavailable. For example, this may happen when the user is switched, the device is locked or another pending operation prevents or disables it.

Constant Value: 5 (0x00000005)

FINGERPRINT_ERROR_HW_NOT_PRESENT

added in API level 28
public static final int FINGERPRINT_ERROR_HW_NOT_PRESENT

The device does not have a fingerprint sensor.

Constant Value: 12 (0x0000000c)

FINGERPRINT_ERROR_HW_UNAVAILABLE

added in API level 23
public static final int FINGERPRINT_ERROR_HW_UNAVAILABLE

The hardware is unavailable. Try again later.

Constant Value: 1 (0x00000001)

FINGERPRINT_ERROR_LOCKOUT

added in API level 23
public static final int FINGERPRINT_ERROR_LOCKOUT

The operation was canceled because the API is locked out due to too many attempts. This occurs after 5 failed attempts, and lasts for 30 seconds.

Constant Value: 7 (0x00000007)

FINGERPRINT_ERROR_LOCKOUT_PERMANENT

added in API level 27
public static final int FINGERPRINT_ERROR_LOCKOUT_PERMANENT

The operation was canceled because FINGERPRINT_ERROR_LOCKOUT occurred too many times. Fingerprint authentication is disabled until the user unlocks with strong authentication (PIN/Pattern/Password)

Constant Value: 9 (0x00000009)

FINGERPRINT_ERROR_NO_FINGERPRINTS

added in API level 28
public static final int FINGERPRINT_ERROR_NO_FINGERPRINTS

The user does not have any fingerprints enrolled.

Constant Value: 11 (0x0000000b)

FINGERPRINT_ERROR_NO_SPACE

added in API level 23
public static final int FINGERPRINT_ERROR_NO_SPACE

Error state returned for operations like enrollment; the operation cannot be completed because there's not enough storage remaining to complete the operation.

Constant Value: 4 (0x00000004)

FINGERPRINT_ERROR_TIMEOUT

added in API level 23
public static final int FINGERPRINT_ERROR_TIMEOUT

Error state returned when the current request has been running too long. This is intended to prevent programs from waiting for the fingerprint sensor indefinitely. The timeout is platform and sensor-specific, but is generally on the order of 30 seconds.

Constant Value: 3 (0x00000003)

FINGERPRINT_ERROR_UNABLE_TO_PROCESS

added in API level 23
public static final int FINGERPRINT_ERROR_UNABLE_TO_PROCESS

Error state returned when the sensor was unable to process the current image.

Constant Value: 2 (0x00000002)

FINGERPRINT_ERROR_USER_CANCELED

added in API level 27
public static final int FINGERPRINT_ERROR_USER_CANCELED

The user canceled the operation. Upon receiving this, applications should use alternate authentication (e.g. a password). The application should also provide the means to return to fingerprint authentication, such as a "use fingerprint" button.

Constant Value: 10 (0x0000000a)

FINGERPRINT_ERROR_VENDOR

added in API level 27
public static final int FINGERPRINT_ERROR_VENDOR

Hardware vendors may extend this list if there are conditions that do not fall under one of the above categories. Vendors are responsible for providing error strings for these errors. These messages are typically reserved for internal operations such as enrollment, but may be used to express vendor errors not covered by the ones in fingerprint.h. Applications are expected to show the error message string if they happen, but are advised not to rely on the message id since they will be device and vendor-specific

Constant Value: 8 (0x00000008)

Public methods

authenticate

added in API level 23
public void authenticate (FingerprintManager.CryptoObject crypto, 
                CancellationSignal cancel, 
                int flags, 
                FingerprintManager.AuthenticationCallback callback, 
                Handler handler)

This method was deprecated in API level 28.
See BiometricPrompt.authenticate(CancellationSignal, Executor, BiometricPrompt.AuthenticationCallback) and BiometricPrompt.authenticate(BiometricPrompt.CryptoObject, CancellationSignal, Executor, BiometricPrompt.AuthenticationCallback)

Request authentication of a crypto object. This call warms up the fingerprint hardware and starts scanning for a fingerprint. It terminates when FingerprintManager.AuthenticationCallback.onAuthenticationError(int, CharSequence) or FingerprintManager.AuthenticationCallback.onAuthenticationSucceeded(AuthenticationResult) is called, at which point the object is no longer valid. The operation can be canceled by using the provided cancel object.

Requires the USE_BIOMETRIC or USE_FINGERPRINT permissions.

Parameters
crypto FingerprintManager.CryptoObject: object associated with the call or null if none required.

cancel CancellationSignal: an object that can be used to cancel authentication

This value may be null.

flags int: optional flags; should be 0

callback FingerprintManager.AuthenticationCallback: an object to receive authentication events

This value must never be null.

handler Handler: an optional handler to handle callback events

This value may be null.

Throws
IllegalArgumentException if the crypto operation is not supported or is not backed by Android Keystore facility.
IllegalStateException if the crypto primitive is not initialized.

hasEnrolledFingerprints

added in API level 23
public boolean hasEnrolledFingerprints ()

This method was deprecated in API level 28.
See BiometricPrompt and FINGERPRINT_ERROR_NO_FINGERPRINTS

Determine if there is at least one fingerprint enrolled.

Requires the USE_FINGERPRINT permission.

Returns
boolean true if at least one fingerprint is enrolled, false otherwise

isHardwareDetected

added in API level 23
public boolean isHardwareDetected ()

This method was deprecated in API level 28.
See BiometricPrompt and FINGERPRINT_ERROR_HW_UNAVAILABLE

Determine if fingerprint hardware is present and functional.

Requires the USE_FINGERPRINT permission.

Returns
boolean true if hardware is present and functional, false otherwise.