Холостой прогон сенсора - AzretMagometov/android-littlefinger GitHub Wiki

Запуск

Холостой прогон сенсора или Аутентификация без расшифровки может пригодиться, если приложению требуется проверить, что текущий пользователь - действительно владелец телефона (ну или по крайней мере имеет имеет отпечатки в этом устройстве).

Для этого нужно вызвать метод LittleFinger.authenticate(Callback callback) Callback - функциональный интерфейс с методом onCompleted(AuthResult result) State полученного таким образом AuthResult может быть в следующих состояниях:

  1. SUCCESS - отпечаток распознан верно
  2. HELP - отпечаток не считался из-за слабого/быстрого нажима
  3. FAIL - отпечаток считан, но не распознан
  4. ERROR - сенсор недоступен, работа прекращена
  5. EXCEPTION - произошла ошибка. Ошибки описаны в отдельном разделе Wiki.

Эти состояния коррелируют с методами FingerprintManager.AuthenticationCallback(). AuthResult в состояниях HELP и ERROR содержит errorCode - в поле и message - внутри throwable. Так же AuthResult в состоянии ERROR хранит переменную canceledByUser, c помощью которой можно определить, почему произошла ошибка - из-за перегруза системы (несколько FAIL -> ERROR) или из-за действий пользователя (покинул экран, отменил нажатием кнопки и т.п.)

Отмена

Метод cancelAuth() служит для отмены запущенной операции сканирования. Этот метод приведет к тому, что в Callback попадет AuthResult с состоянием ERROR и canceledByUser - true.

Пример

Запуск сенсора

   void onStartSensorClick() {
       showMessage(R.string.fp_message_touch_sensor);
       mLittleFinger.authenticate(this::handleSensorResult);
   }

Обработка коллбека

   private void handleSensorResult(AuthResult authResult) {
       int labelRes = 0;
       switch (authResult.getState()) {
           case HELP:
               labelRes = R.string.fp_touch_help;
               break;
           case FAIL:
               labelRes = R.string.fp_touch_failed;
               break;
           case ERROR:
               labelRes = authResult.isCanceledByUser() 
                       ? R.string.fp_touch_canceled_by_user 
                       : R.string.fp_touch_error;
               break;
           case SUCCESS:
               labelRes = R.string.fp_touch_success;
               break;
       }
       showMessage(labelRes);
   }

Отмена сканирования

   void dispatchOnPause() {
       mLittleFinger.cancelAuth();
   }