В настоящее время я разрабатываю библиотеку биометрии для проекта и, похоже, не могу заставить работать распознавание лиц.
BiometricManager правильно работает с отпечатками пальцев на всех устройствах, которые я пробовал, однако он не обнаруживает никаких зарегистрированных биометрических данных лица для моего Huawei P30 ELE-L29 (версия EMUI 10.0.0 - Android версии 10) и возвращает BIOMETRIC_ERROR_NONE_ENROLLED, когда я вызываю BiometricManager # canAuthenticate (). Это единственное устройство с API версии 29, которое у меня есть, поскольку в эмуляторе Android Studio не реализовано распознавание лиц, а другие эмуляторы (Bluestacks, Nox и т. Д.) Не могут быть настроены для работы на Android 10 на моем MacBook.
Я был бы признателен за любой свет по этому вопросу, поскольку распознавание лиц является новым для родного 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
}