Biometrics with iris and face recognition
Android 6
- Introduces the
FingerprintManager
class to provide support for fingerprint sensors. - Developers needed to build their own fingerprint UI.
Android 9
- Deprecates the
FingerprintManager
class. - Introduces a new Biometric API to access the variety of biometric hardware available on OEM devices.
- Introduces a standardized fingerprint UI policy. The OEMs can now customize the UI. The app developers lose the ability to create their custom UIs.
- It includes fingerprint integration only for the
BiometricPrompt
class.
Android 10
- The Biometric API is now part of the AndroidX Biometric Library, which makes all of the biometric behavior from Android 10 available to all devices that run Android 6.0 (API level 23) or higher.
- Includes fingerprint and face authentication integration for
BiometricPrompt
. - Introduces the
BiometricManager
class that developers can use to query the availability of biometric authentication- If the device supports multiple biometrics, the user can specify a default/prefered method in the OS settings.
BiometricManager
doesn't give you information about the available methods, it just returns whether there is at least one available or not.BiometricManager
doesn't allow you to know which biometric method is being used.BiometricManager
doesn't allow you to select a preferred method if the device supports multiple methods.- If there are no biometric sensors present, the API now allows developers to specify whether they want to use device credentials (PIN, pattern, or password) instead.
- The framework is now providing a friendly, standardized API for OEMs to integrate support for all types of biometric sensors on their devices.
- The framework has now built-in support for facial authentication in Android 10 so that vendors don’t need to create a custom implementation.
- Biometric Library architecture:
About the iris scanners, several OEMs (e.g. Samsung) have already integrated the implementations of their iris sensors with the Biometric API. However, Android doesn't provide a standard API for OEMs to interact with the iris sensors yet (as far as I know), which prevents AOSP-based ROMs to access the iris sensors.
In the AOSP issue tracker, there is an open ticket for "Adding Biometrics Iris HAL interface", that aims to create a HAL interface to standardize how the Android framework communicates with iris scanners. Unfortunately, the last progress made in the ticket was in March 2018.
Update: Android 11
- Android 11 introduces the BiometricManager.Authenticators interface. This interface defines the possible strengths of biometric hardware elements:
BIOMETRIC_STRONG
: Any biometric (e.g. fingerprint, iris, or face) on the device that meets or exceeds the requirements for Strong, as defined by the Android CDD.BIOMETRIC_WEAK
: Any biometric (e.g. fingerprint, iris, or face) on the device that meets or exceeds the requirements for Weak, as defined by the Android CDD.DEVICE_CREDENTIAL
: The non-biometric credential used to secure the device (i.e., PIN, pattern, or password).
- The
ACTION_BIOMETRIC_ENROLL
intent action invokes system settings and requests the user to enroll a biometric hardware element. You can provide the strength level as an extra. - The AuthenticationResult API has a new method
getAuthenticationType()
that allows you to check whether the user authenticated using biometric or device credentials.
References
- Show a biometric authentication dialog
- Biometric AOSP
- One Biometric API Over all Android
Android 9 only includes support for the Fingerprint aspect of biometric authentication. Iris and facial recognition will be supported down the line. Note that this results in the deprecation of the previous FingerprintManager APIs when writing apps for Android P.
Android 9 only includes fingerprint integration for BiometricPrompt. However, integrated support for other biometric modalities are forthcoming.
Source