Проверка наличия и состояния сенсора - AzretMagometov/android-littlefinger GitHub Wiki

Методы для определения состояния сенсора

LittleFinger.getSensorState() возвращает объект типа AuthResult - комплексный объект, у которого можно вызывать метод AuthResult.getState() для конкретного определения состояния. Состояния выражены через enum State, в данном методе возможно получить следующие 4 варианта:

  1. NOT_SUPPORTED - устройство вообще не поддерживает отпечатки
  2. UNSECURED - устройство не защищено пином, паролем, рисунком и т.п.
  3. NO_ENROLLED_FP- на устройстве нет записанных отпечатков
  4. READY_TO_USE - устройство полностью готово к использованию сенсора

В 1, 2 и 3 случае можно вызвать AuthResult так же снабжается trowable, message которого можно, например, вывести в лог.

Если в детальном определении состояния нет необходимости, то можно воспользоваться точечными методами

  • LittleFinger.isFingerprintSupported() - возвращает false, если устройство не поддерживает отпечатки вообще
  • LittleFinger.isReadyToUse() - возвращает true, если устройство полностью готово к использованию.

Применение

Детальная проверка

Здесь мы узнаем конкретное состояние устройства и показываем соответствующее сообщение:

    void dispatchOnResume() {
        State state = mLittleFinger.getSensorState().getState();
        int labelRes = 0;
        boolean isStartEnabled = false;
        switch (state) {
            case NOT_SUPPORTED:
                labelRes = R.string.fp_sensor_not_supported;
                break;
            case UNSECURED:
                labelRes = R.string.fp_sensor_device_not_blocked;
                break;
            case NO_ENROLLED_FP:
                labelRes = R.string.fp_sensor_no_enrolled_fingerprints;
                break;
            case READY_TO_USE:
                labelRes = R.string.fp_sensor_ready;
                isStartEnabled = true;
                break;
        }
  
    }

Упрощенная проверка

Здесь логика проста:

  • на устройствах без сенсора связанный с работой с отпечатками UI будет невидим
  • на устройствах, в которых сенсор здесь и сейчас не готов работать с сенсором, UI будет в задисейбленном состоянии:
    private void handleEnterByFingerprintOption() {
        setCheckboxVisibility(mLittleFinger.isFingerprintSupported());
        setCheckboxEnabled(mLittleFinger.isReadyToUse());
    }