如何检查设备是否支持 BiometricPrompt 的人脸认证

How to check if device supports face authentication for BiometricPrompt

在我的项目中,我们正在使用 BiometricPrompt 添加此生物识别身份验证功能。可以在应用的设置中启用生物识别,但如果用户的设备支持面部生物识别,应用也需要显示。

根据我的研究,检查 android 设备是否具有面部生物特征的官方方法是通过以下代码:

val hasFaceBiometric = packageManager.hasSystemFeature(PackageManager.FEATURE_FACE)

但是,此检查似乎不可靠,因为它仅在 Google Pixel 4 上 returns 正确。我在三星 Galaxy S9 和 S10 上测试了我们的应用程序,它们似乎都支持面部生物识别,但奇怪的是,上面的代码 returns false.

根据android目前面部生物识别的现状,真的有可靠的方法来检查面部生物识别支持吗?

三星的人脸识别使用的是前置摄像头,这被认为是不安全的生物识别技术。文档是这样说的:

Feature for getSystemAvailableFeatures and hasSystemFeature: The device has biometric hardware to perform face authentication.

我假设这将检查设备是否具有 Pixel 4 具有的安全人脸识别功能。从 Android 10 起(Pie 有一个问题,在某种程度上启用了 API 中的不安全生物识别)三星将永远不会显示面部识别的 BiometricPrompt。如果他们在未来的设备中提供安全的面部识别,则此检查可能 return 为真。