AndroidX Biometric gives us a single API for supporting Biometrics on Android devices via the BiometricPrompt, and a fallback Fingerprint dialog for API 23-27. This post does a side-by-side comparison of what it looks like on the Pixel 4, Pixel 3, and an API 26 Emulator to show you what it looks like on different devices, hardware and different builder configurations.
Currently, the Pixel 4 is the only device that supports Face Unlock via the Biometric Prompt. There aren’t even emulators that support it. I ended up with a Pixel 4, and wanted to create this post with you to save you some 💰 and⌚.
What is the Android Biometric Prompt?
The Android Biometric Prompt was released as part of the Android OS in API 28 (Pie) to replace the FingerprintManager. Its goal is to make a standard way of interacting with Biometrics via the operating system, and also support multiple types of biometric types such as Fingerprint, Face & TBD.
- August 2018 – Biometric Prompt Released & Fingerprint Manager Deprecated
- October 2019 – Pixel 4 with Face Unlock Released
- November 2019 – AndroidX Biometric Released
One of the downsides of the Biometric Prompt is that we are asked to use the terminology “Biometric” instead of “Fingerprint” or “Face” because the BiometricManager doesn’t tell us the type of biometric the user will use. Read more about how to provide better user experiences through tailored biometric messaging in my previous post.
Using AndroidX Biometric
I’m going to show you various configurations of the library in this post, but refer the documentation from Google for more information.
BiometricPrompt.PromptInfo.Builder() .setTitle("Authenticate with Face") .setNegativeButtonText("Cancel") .setConfirmationRequired(true) .build()
Face Unlock Success
Face Unlock Fail & Retry
Confirmation Required
There is a configuration parameter for Biometric Prompt Info Builder called “setConfirmationRequired” which, when set to false, passively authenticates the user without any interaction (other than looking at the phone). Note: This only works for Face Unlock since a Fingerprint is confirmation.
.setConfirmationRequired(false)
.setConfirmationRequired(true)
NOTE: There is a setting which allows a user to ALWAYS confirm when using Face Unlock, so be aware of that when building your applications.
Conclusion
Use AndroidX Biometric. It feels like they were still working out the kinks when they release Biometric Prompt in API 28. The AndroidX Library has some device specific workarounds and the fallback dialog for API 23-27. It’s weird that there isn’t better documentation about the user experience for each biometric type, which is why I wrote this post. Hopefully you won’t have to spend hundreds of dollars on a Pixel 4 now, and have a better idea of what the Biometric Prompt looks like under different configurations.
Links:
- AndroidX Biometric
- Android Documentation on Using Biometric Prompt
- “Overview of Biometric Auth” at Droidcon London 2019 If you want some background of how you would write code to use the Android Biometric Prompt, check out this talk from Michael Bailey (@yogurtearl).
- Learn how I create the GIFs in this post here.