【问题标题】:How to check if device supports face authentication for BiometricPrompt如何检查设备是否支持 BiometricPrompt 的人脸身份验证
【发布时间】:2020-07-04 13:13:54
【问题描述】:

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

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

val hasFaceBiometric = packageManager.hasSystemFeature(PackageManager.FEATURE_FACE)

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

以目前android中人脸生物识别的状态,真的有可靠的方法来检查人脸生物识别支持吗?

【问题讨论】:

  • FEATURE_FACE 已添加到 API 级别 29 您确定您使用的是 API 级别 29 或更高版本吗?在您用来测试的三星设备中?
  • 是的,三星设备在 android 10 上运行。我还在运行在 android 9 上的 Note 9 上对其进行了测试。

标签: android kotlin android-biometric-prompt android-biometric


【解决方案1】:

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

getSystemAvailableFeatures 和 hasSystemFeature 的功能:设备具有生物识别硬件来执行面部身份验证。

我假设这将检查设备是否具有 Pixel 4 具有的安全面部识别功能。从 Android 10 及更高版本(Pie 有一个问题,它在 API 中启用了不安全的生物识别技术)三星将永远不会显示 BiometricPrompt 进行人脸识别。如果他们在未来的设备中提供安全的人脸识别功能,则此检查可能会返回 true。

【讨论】:

  • 目前我在三星S10+上使用BiometricPrompt进行人脸识别。但是有必要setAllowedAuthenticators:promptInfo = new BiometricPrompt.PromptInfo.Builder().setAllowedAuthenticators(BiometricManager.Authenticators.BIOMETRIC_WEAK);另一方面我没有找到任何方法来检查是否完全可以使用人脸识别。
  • 就像我说的,三星使用前置摄像头进行人脸识别,因此并不安全。这就是为什么您必须将其专门设置为BIOMETRIC_WEAK。如果您使用context.getSystemService(BiometricManager::class.java)?.canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS,它还会检查我很难找到的弱身份验证器。由于 Android 11 可以使用相同的方法,但您可以在其中传递 Authenticators。但是我建议不要使用它,因为这根本不安全!除非您有充分的理由使用此功能,否则请始终使用强大的生物识别技术。
猜你喜欢
  • 2020-07-12
  • 2016-05-01
  • 1970-01-01
  • 2020-01-08
  • 2021-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多