Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin Android BIOMETRIC Manager返回生物识别错误\u无\u已注册进行面部识别_Kotlin_Android 10.0_Android Biometric Prompt - Fatal编程技术网

Kotlin Android BIOMETRIC Manager返回生物识别错误\u无\u已注册进行面部识别

Kotlin Android BIOMETRIC Manager返回生物识别错误\u无\u已注册进行面部识别,kotlin,android-10.0,android-biometric-prompt,Kotlin,Android 10.0,Android Biometric Prompt,我目前正在为一个项目开发一个生物特征库,似乎无法使面部识别工作 BIOMETRIC Manager可以在我尝试过的所有设备中正确处理指纹,但是它没有检测到我的华为P30 ELE-L29(EMUI版本10.0.0-Android版本10)的任何注册人脸生物特征,并在我调用BIOMETRIC Manager时返回BIOMETRIC_ERROR_NONE_registed()。 这是我唯一一款API版本为29的设备,因为Android Studio emulator没有实现面部识别,其他模拟器(Blu

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

BIOMETRIC Manager可以在我尝试过的所有设备中正确处理指纹,但是它没有检测到我的华为P30 ELE-L29(EMUI版本10.0.0-Android版本10)的任何注册人脸生物特征,并在我调用BIOMETRIC Manager时返回BIOMETRIC_ERROR_NONE_registed()。 这是我唯一一款API版本为29的设备,因为Android Studio emulator没有实现面部识别,其他模拟器(Bluestack、Nox等)无法配置为在我的macbook上的Android 10上运行

我希望能对这个问题有所了解,因为面部识别对于原生安卓系统来说是新的,我找不到任何类似的问题。我不确定这部手机是否有问题,或者我的代码是否有错误

我的MinSDK版本是23(安卓6.0棉花糖),我的TargetSDK版本是29(安卓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
    }

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

嗨,Isai,很抱歉我不够清楚,但我确实启用了人脸识别,并且有注册凭据(如您所说,我可以使用人脸识别解锁手机),但是,生物特征管理器似乎没有看到它们。这是您的设备吗?我快速看了一下,似乎操作系统版本10在我所在的美国不可用。我希望能够帮助您排除故障您是否在调用authenticate时将CryptoObject传递到生物特征提示?例如,biometricPrompt.authenticate(PrompInfo,cryptoObject)。如果要执行此操作,请在设置CryptoObject时检查是否设置了setUserAuthenticationRequired()和SetInvalidatedByEnrollment(true)(后者默认为true)。我发现当我这么做的时候,它只接受指纹而不接受面部识别。