9

我需要使用指纹和人脸身份验证集成生物识别身份验证。指纹身份验证工作完美,但是当我只设置人脸身份验证时,我得到来自 BiometricManager.from(context) 方法的生物识别未注册响应,如下所示,

val biometricManager = BiometricManager.from(context)
    when(biometricManager.canAuthenticate()){
        BiometricManager.BIOMETRIC_SUCCESS ->{
            Log.e(TAG, "App can authenticate using biometrics.")
        }
        BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE ->{
            Log.d(TAG, "Hardware not available")
        }
        BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE ->{
            Log.d(TAG, "Biometric features are currently unavailable.")
        }
        BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED ->{
            Log.d(TAG, "The user hasn't associated any biometric credentials with their account.")
        }
        else ->{
            Log.d(TAG, "Nothing supported")
        }
    }
4

4 回答 4

6

Android 生物识别 API 只能在其生物特征(面部、指纹、虹膜)与 Android 生物识别堆栈兼容的设备上工作。我有一组支持人脸功能的设备,其中只有少数支持 Android Biometrics。

于 2020-09-03T05:05:41.153 回答
2

在查看了为 Android 实现生物识别的所有障碍之后,我选择不使用 BiometricManager.from(context) 方法来检查是否启用了生物识别身份验证,而不是检查是否启用了 KEYGUARD_SERVICE 并按照提示信息使用

BiometricPrompt.PromptInfo.Builder().apply {
            setTitle(getString(R.string.title))
            setSubtitle(getString(R.string.sub_title))
            setConfirmationRequired(true)
            setDeviceCredentialAllowed(true)
        }.build()

通过它即使只设置了面部 ID 并且不支持当前回调,应用程序也会回退到设备 PIN 身份验证方法。

于 2020-09-07T05:16:48.687 回答
2

我在将它集成到我的应用程序时遇到同样的问题当我使用

biometricManager.canAuthenticate(BIOMETRIC_STRONG)

检查设备中是否有生物识别功能,它会返回 BIOMETRIC_ERROR_NONE_ENROLLED 并且一旦我将身份验证模式更改为BIOMETRIC_WEEK它运行良好,我就会在三星 S9 和其他一些设备上进行测试。目前正在使用这种生物识别依赖希望它对你有用

implementation "androidx.biometric:biometric-ktx:1.2.0-alpha03"
于 2021-07-15T14:11:51.057 回答
-1

我在使用它时发现的一些事实。这是基于生物识别 API“实现 'androidx.biometric:biometric:1.0.1'”。

  1. 三星设备不支持人脸识别,因为它没有 3D 人脸解锁功能,请参阅此处。这个问题在三星方面是公开的,因为三星的面部解锁是三星自己开发的,而不是谷歌操作系统。但它确实支持使用生物识别管理器 API 进行指纹扫描。
  2. 真人脸解锁仅适用于 Pixel 4(这是基于我的测试,不确定其他设备是否支持,但我测试过的顶级设备是三星,包括 Note 系列和 Galaxy 系列,以及摩托罗拉系列)我只能使用面部在 Pixel 4 中解锁。
  3. 三星正在努力,很快就会上市(不确定何时)。
  4. 到目前为止,很少有应用程序支持面部解锁,因为大多数 Android 基础设备都不是来自谷歌,并且基于 3d 的解锁在制造方面不可用。

我为社区创建了参考 POC 以提供帮助。该文档没有提供有关生物特征变化检测的良好文档。这是纯 kotlin 代码,还可以检测生物特征变化和许多功能,例如用户是否注册了 Bio,设备是否注册了 Bio,什么类型的生物特征,用户之前注册的。请看一下这个链接

于 2020-09-05T05:04:53.463 回答