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