kotlin - Android BiometricManager 返回 BIOMETRIC_ERROR_NONE_ENROLLED 进行面部识别

标签 kotlin android-10.0 android-biometric-prompt

我目前正在为一个项目开发生物识别库,但似乎无法使面部识别工作。

BiometricManager 适用于我尝试过的所有设备中的指纹,但是它没有检测到我的华为 P30 ELE-L29(EMUI 版本 10.0.0 - Android 版本 10)的任何注册面部生物识别信息,并在我调用 BiometricManager# 时返回 BIOMETRIC_ERROR_NONE_ENROLLED可以验证()。
这是我唯一可用的 API 版本 29 的设备,因为 Android Studio 模拟器没有实现面部识别,并且其他模拟器(Bluestacks、Nox 等)无法配置为在我的 macbook 上运行 Android 10。

我很感激有关该主题的任何信息,因为面部识别对于原生 android 来说是新的,我在那里找不到任何类似的问题。我不确定这是否是这个特定电话的问题,或者我的代码是否有错误。

我的 minSdkVersion 是 23 (Android 6.0 Marshmallow),我的 targetSdkVersion 是 29 (Android 10 Q)。

我的(部分)实现:

fun isBiometricsSupported(@NonNull context: Context): Boolean {
        val biometricManager = BiometricManager.from(context)
        var isBiometricsSupported = false

        when (biometricManager.canAuthenticate()) {
            BiometricManager.BIOMETRIC_SUCCESS -> {
                isBiometricsSupported = true
            }
            BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE -> {
                Log.println(Log.INFO, "a", "Logger: BIOMETRIC_ERROR_NO_HARDWARE")
            }
            BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED -> {
                Log.println(Log.INFO, "a", "Logger: BIOMETRIC_ERROR_NONE_ENROLLED")
                //It always goes here if I don't have any fingerprints enrolled,
                //ignoring all other biometric data I may have.
            }
            BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE -> {
                Log.println(Log.ERROR, "a", "Logger: BIOMETRIC_ERROR_HW_UNAVAILABLE")
            }
        }
        return isBiometricsSupported
    }

最佳答案

根据您的错误,设备上没有注册生物识别模板。您必须先在“设置”中注册您的生物识别模板,然后才能在任何其他应用程序中使用生物识别。您通常可以在“安全”下执行此操作。检查生物识别模板是否已注册的另一种方法是:如果您关闭手机,是否可以使用生物识别技术(指纹或面部等)将其解锁?

关于kotlin - Android BiometricManager 返回 BIOMETRIC_ERROR_NONE_ENROLLED 进行面部识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59653732/

相关文章:

android - 需要什么 USE_BIOMETRIC 权限?

java - 为什么在深色和浅色模式下通知颜色不同?

Android 11 从 EXIF 获取图像方向

android - 单元测试的数据库 Assets

java - 错误:未找到Gradle DSL方法: 'imlementation()'

android - Android-Q 中的地理围栏创建错误- "com.google.android.gms.common.api.ApiException: 13"

Android Biometric : IllegalStateException. 必须至少注册一个生物识别才能创建需要用户身份验证的 key

android - 生物识别提示字幕文本在 Android 上被截断

java - 这些代码中的问号是什么意思?

java - rxjava2 - 在线程池上执行任务的简单示例,在单个线程上订阅