Проверка наличия и состояния сенсора - AzretMagometov/android-littlefinger GitHub Wiki
Методы для определения состояния сенсора
LittleFinger.getSensorState() возвращает объект типа AuthResult - комплексный объект, у которого можно вызывать метод AuthResult.getState() для конкретного определения состояния. Состояния выражены через enum State, в данном методе возможно получить следующие 4 варианта:
NOT_SUPPORTED- устройство вообще не поддерживает отпечаткиUNSECURED- устройство не защищено пином, паролем, рисунком и т.п.NO_ENROLLED_FP- на устройстве нет записанных отпечатков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());
}