Android BiometricManager возвращает BIOMETRIC_ERROR_NONE_ENROLLED для распознавания лиц - PullRequest
1 голос
/ 09 января 2020

В настоящее время я занимаюсь разработкой библиотеки биометрии для проекта и, похоже, не могу заставить распознавание лиц работать.

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
    }

1 Ответ

0 голосов
/ 13 января 2020

Из-за вашей ошибки на устройстве нет шаблонов c биометрии. Сначала вы должны зарегистрировать свой шаблон biometri c в настройках, прежде чем использовать биометрию в любом другом приложении. Обычно это можно сделать в разделе «Безопасность». Также один из способов проверить, зарегистрирован ли шаблон biometri c, заключается в следующем: если вы выключите свой телефон, сможете ли вы разблокировать его с помощью биометрии (отпечаток пальца или лицо и т. Д. c.)?

...