在我的项目中,我们使用BiometricPrompt添加了这个生物识别身份验证功能。可以在应用的设置中启用生物识别,但应用还需要显示用户设备上是否支持人脸生物识别。
根据我的研究,检查Android设备是否具有面部生物识别的官方方法是通过以下代码:
val hasFaceBiometric = packageManager.hasSystemFeature(PackageManager.FEATURE_FACE)
但是,此检查似乎不可靠,因为它仅在Google Pixel 4上返回true。我在三星Galaxy S9和S10上测试了我们的应用程序,它们似乎都支持面部生物识别技术,但奇怪的是,上面的代码返回false。
以安卓人脸生物识别的现状,真的有可靠的方法来检查人脸生物识别支持吗?
三星的面部识别使用的是前置摄像头,这不被认为是安全的生物识别技术。文档是这么说的:
getSystemAvailableFeatures和hasSystemFeature的功能:该设备具有生物识别硬件来执行面部身份验证。
我假设这将检查设备是否具有Pixel 4具有的安全面部识别功能。从Android 10及更高版本开始(Pie有一个问题,在API中启用了不安全的生物识别技术(,三星永远不会显示用于面部识别的BiometricPrompt。如果他们在未来的设备中提供安全的人脸识别,则此检查可能会返回 true。