Додайте автентифікацію відбитків пальців у свою програму, використовуючи BiometricPrompt

Автор: Lewis Jackson
Дата Створення: 13 Травень 2021
Дата Оновлення: 1 Липня 2024
Anonim
Додайте автентифікацію відбитків пальців у свою програму, використовуючи BiometricPrompt - Додатки
Додайте автентифікацію відбитків пальців у свою програму, використовуючи BiometricPrompt - Додатки

Зміст


Скористайтеся API BiometricPrompt, щоб створити додаток, який дозволить користувачеві підтвердити свою особу за допомогою відбитка пальця.

Відкрийте Android Studio і створіть новий проект, використовуючи шаблон «Порожня активність». Коли буде запропоновано, встановіть мінімальний SDK для проекту 28 або вище, оскільки це не дозволить вашій програмі встановлюватись раніше, ніж на Android Pie.

Якщо ви хочете зробити ваш додаток доступним для більш широкого кола пристроїв Android, вам слід перевірити, на якій версії Android зараз встановлено ваше додаток, а потім по-різному обробляти біометричну автентифікацію, залежно від рівня API пристрою.

Додайте Біометричну бібліотеку

Для початку відкрийте файл build.gradle на рівні модуля та додайте останню версію біометричної бібліотеки як залежність від проекту:

залежності {реалізація androidx.biometric: biometric: 1.0.0-alpha03

Додати дозвіл USE_BIOMETRIC

API BiometricPrompt дозволяє вам скористатися всіма способами біометричної аутентифікації, які підтримує пристрій, за допомогою одного дозволу.


Відкрийте Маніфест свого проекту та додайте дозвіл "USE_BIOMETRIC":

Створіть макет програми

Далі створимо макет нашої програми. Я додам одну кнопку, яка при натисканні запустить діалогове вікно автентифікації відбитків пальців:

Відкрийте файл strings.xml вашого проекту та додайте рядок "auth":

BiometricPromptSample Аутентифікація за допомогою відбитків пальців

Аутентифікація особи користувача

Тепер давайте розглянемо, як ви засвідчили особу користувача, використовуючи BiometricPrompt.


Створіть біометричний примірник примірника

Клас BiometricPrompt включає клас супутнього Builder (), який можна використовувати для створення екземпляра BiometricPrompt та ініціювання автентифікації:

фінал BiometricPrompt.PromptInfo promptInfo = новий BiometricPrompt.PromptInfo.Builder ()

Створюючи свій примірник BiometricPrompt, вам потрібно буде визначити текст, який повинен відображатися в діалоговому вікні аутентифікації, та налаштувати "негативну кнопку", яка є кнопкою, яка дозволяє користувачеві скасувати аутентифікацію.

Для налаштування діалогового вікна аутентифікації вам потрібно буде вказати наступне:

  • setTitle. Назва підказки підказки для відбитків пальців. (Вимагається)
  • setSubtitle. Підзаголовок запиту аутентифікації за відбитками пальців. (Необов’язково)
  • setDescription. Додатковий опис, який відображатиметься у діалоговому вікні аутентифікації. (Необов’язково)
  • setNegativeButton (текст, виконавець, слухач). Це мітка негативної кнопки, наприклад "Скасувати" або "Вийти". Під час налаштування негативної кнопки вам також потрібно надати екземпляр Виконавця та OnClickListener, щоб користувач міг відмовитися від діалогу аутентифікації.

На момент написання не вдалося налаштувати піктограму чи помилку, що використовується в діалоговому вікні аутентифікації.

Нарешті, вам потрібно буде зателефонувати build (). Це дає нам таке:

остаточний BiometricPrompt.PromptInfo promptInfo = новий BiometricPrompt.PromptInfo.Builder () .setTitle ("Текст заголовка йде сюди") .setSubtitle ("Підзаголовок йде сюди") .setDescription ("Це опис") .setNegativeButtonText ("Скасувати") .build ();

Обробляйте зворотні дзвінки аутентифікації

Екземпляру BiometricPrompt призначений набір методів зворотного виклику аутентифікації, які повідомлять вашу програму про результати процесу автентифікації.

Вам потрібно буде обернути всі ці зворотні виклики в екземплярі класу BiometricPrompt.AuthenticationCallback:

final BiometricPrompt myBiometricPrompt = новий BiometricPrompt (активність, новийExecutor, новий BiometricPrompt.AuthenticationCallback () {

Наступним кроком є ​​реалізація деяких або всіх наведених нижче методів зворотного виклику:

1. onAuthenticationSucceeded ()

Цей метод називається, коли відбиток пальця успішно узгоджується з одним із відбитків пальців, зареєстрованих на пристрої. У цьому випадку об’єкт AuthenticationResult передається до зворотного виклику onAuthenticationSucceeded, і ваш додаток виконає завдання у відповідь на цю успішну автентифікацію.

Щоб полегшити все, наша програма відповість, надрукувавши Logcat Android Studio:

@Override public void onAuthenticationSucceeded (результат @ @ NonNull BiometricPrompt.AuthenticationResult) {super.onAuthenticationSucceeded (результат); Log.d (TAG, "Відбиток пальця успішно розпізнаний"); }

2. onAuthenticationFailed ()

Цей метод запускається, коли сканування успішно завершено, але відбиток пальців не відповідає жодному з відбитків, зареєстрованих на пристрої. Знову ж, наш додаток відповість на цю подію аутентифікації, надрукувавши на Logcat:

@Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, "Відбиток пальця не розпізнається"); }

3. onAuthenticationError

Цей зворотний виклик спрацьовує всякий раз, коли виникає непоправна помилка, і автентифікація не може бути успішно завершена. Наприклад, можливо сенсорний датчик пристрою покритий брудом або жиром, користувач не зареєстрував жодних відбитків пальців на цьому пристрої або не вистачає пам'яті для проведення повного біометричного сканування.

Ось код, який я буду використовувати у своєму додатку:

@Override public void onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {Log.d (TAG, "Виникла помилка, яку не можна знайти"); }}

4. onAuthenticationHelp

Метод onAuthenticationHelp викликається всякий раз, коли виникає нефатальна помилка, і включає довідковий код та код, який надає додаткову інформацію про помилку.

Щоб ми не спростили наш код, я не використовую OnAuthenticationHelp у нашому додатку, але реалізація виглядатиме приблизно так:

@Override public void onAuthenticationHelp (int helpCode, CharSequence helpString) {super.onAuthenticationHelp (helpCode, helpString); biometricCallback.onAuthenticationHelp (helpCode, helpString); }

Нарешті, нам потрібно викликати метод authenticate () для примірника BiometricPrompt:

myBiometricPrompt.authenticate (promptInfo);

Впровадження біометричної аутентифікації Android Pie

Після того як ви виконаєте всі вищезазначені дії, ваша MainActivity має виглядати приблизно так:

імпортувати androidx.appcompat.app.AppCompatActivity; імпорт androidx.biometric.BiometricPrompt; імпортувати android.os.Bundle; імпорт java.util.concurrent.Executor; імпорт java.util.concurrent.Eeecutors; імпортувати androidx.fragment.app.FragmentActivity; імпорт android.util.Log; імпортувати android.view.View; імпорт androidx.annotation.NonNull; загальнодоступний клас MainActivity розширює AppCompatActivity {приватний статичний остаточний String TAG = MainActivity.class.getName (); @Override захищений недійсним onCreate (пакет збереженихInstanceState) {super.onCreate (збереженийInstanceState); setContentView (R.layout.activity_main); // Створення пулу потоків за допомогою однієї нитки // Executor newExecutor = Executors.newSingleThreadExecutor (); Активність FragmentActivity = це; // Починайте прослуховування подій аутентифікації // остаточний BiometricPrompt myBiometricPrompt = новий BiometricPrompt (активність, newExecutor, новий BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError викликається, коли виникає фатальна помилка // public void onAuthenticationErll (inAnthenticationErll (ininTuton) CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {// Роздрукуйте в Logcat // Log.d (TAG, "Виникла невідправна помилка")}}} // onAuthenticationSucceeded викликається, коли відбиток пальця успішно узгоджений // @Override public void onAuthenticationSucceeded (результат @NonNull BiometricPrompt.AuthenticationResult) {super.onAuthenticationSucceeded (result); // Друк на Logcat // Log.d (TAG, "Fingerprint розпізнано успішно ");} // onAuthenticationFailed викликається, коли відбиток пальців не відповідає // @Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); // Друк a в журнал кішка // Log.d (TAG, "Відбиток пальця не впізнано"); }}); // Створіть примірник BiometricPrompt // остаточний BiometricPrompt.PromptInfo promptInfo = новий BiometricPrompt.PromptInfo.Builder () // Додайте текст до діалогового вікна // .setTitle ("Текст заголовка йде сюди") .setSubtitle ("Підзаголовок йде сюди") ) .setDescription ("Це опис") .setNegativeButtonText ("Скасувати") // Побудувати діалог // .build (); // Призначте onClickListener кнопці «Автентифікація» програми // findViewById (R.id.launchAuthentication) .setOnClickListener (новий View.OnClickListener () {@Override public void onClick (View v) {myBiometricPrompt.authenticate} (promptInfofoot); }); }}

Тестування вашого проекту

Тепер ви створили свій проект, саме час поставити його на тест і побачити, чи дійсно він додає автентифікацію відбитків пальців у ваш додаток!

Для запуску цього проекту вам знадобиться або фізичний смартфон або планшет, на якому працює Android Pie, або віртуальний пристрій Android (AVD), який використовує попередній перегляд Android P або новішої версії.

Вам також доведеться зареєструвати принаймні один відбиток пальців на своєму пристрої. Якщо ви використовуєте фізичний пристрій Android, тоді:

  • Захистіть свій блокувальний екран за допомогою PIN-коду, пароля або шаблону, якщо ви цього ще не зробили (перейшовши до "Налаштування> Блокування екрана та безпека> Тип блокування екрана> Шаблон / PIN-код / ​​Пароль", а потім дотримуючись інструкцій на екрані).
  • Запустіть програму "Налаштування" вашого пристрою.
  • Виберіть "Блокування екрана та безпека".
  • Виберіть "Сканер відбитків пальців".
  • Дотримуйтесь інструкцій, щоб зареєструвати один або кілька відбитків пальців.

У віртуальних пристроїв Android немає фізичного сенсора сенсорного зв’язку, тому вам знадобиться імітувати подію на дотик:

  • Запустіть свій AVD, якщо ви ще цього не зробили.
  • Поряд із AVD ви побачите смужку кнопок. Знайдіть три пунктирну кнопку «Більше» (де курсор розміщений на наступному скріншоті) та натисніть на неї. Це запустить вікно "Розширені елементи керування".
  • У вікні розширених елементів керування виберіть "Відбиток пальця". Це відкриває набір елементів керування, де ви можете імітувати різні події дотику.
  • Відкрийте спадне меню та виберіть відбиток пальця, який потрібно зареєструвати на цьому пристрої; Я використовую "Палець 1."
  • Тепер перейдемо до емуляційного пристрою. Запустіть програму AVD "Налаштування" та виберіть "Безпека та місцезнаходження".
  • Якщо ви ще не налаштували PIN-код, пароль або шаблон, виберіть "Блокування екрана" та дотримуйтесь інструкцій на екрані, щоб убезпечити свій екран блокування, а потім поверніться до головного екрана "Налаштування> Безпека та місцезнаходження".
  • Виберіть "Відбиток пальця", а потім "Додати відбиток пальця".
  • Тепер вам буде запропоновано натиснути пальцем на сенсорний сенсор. Натомість натискайте кнопку "Торкніться датчика", поки не з’явиться "Відбиток пальця".

  • Натисніть «Готово».
  • Якщо ви хочете зареєструвати додаткові відбитки пальців, то промийте та повторіть описані вище дії.

Після того, як ви зареєстрували хоча б один відбиток пальців, ви готові поставити свою заявку на тест. Я перевіряю, як наша програма обробляє три різні сценарії:

  • Користувач намагається пройти автентифікацію за допомогою зареєстрованого відбитка пальця.
  • Користувач намагається пройти автентифікацію за допомогою відбитка пальця, який не зареєстрований на цьому пристрої.
  • Користувач намагається здійснити автентифікацію, використовуючи незареєстровані відбитки пальців, кілька разів та швидко поспіль.

Спробуємо перевірити автентифікацію за допомогою відбитка пальця, який ми щойно зареєстрували на нашому пристрої:

  • Переконайтеся, що ви переглядаєте монітор Logcat Android Studio, оскільки саме тут з’являться різні програми вашої програми.

  • Встановіть свою програму на тестовий пристрій.
  • Торкніться кнопки "Автентифікувати за допомогою відбитка пальця" програми. З'явиться діалогове вікно встановлення відбитків пальців.
  • Якщо ви використовуєте фізичний пристрій, натисніть і потримайте кінчик пальця щодо сенсорного датчика пристрою. Якщо ви використовуєте AVD, використовуйте кнопку "Торкніться сенсора", щоб імітувати подію на дотик.
  • Перевірте монітор Logcat. Якщо аутентифікація пройшла успішно, слід побачити таке: "Відбиток пальця успішно розпізнано"

Далі давайте подивимося, що станеться, якщо ми спробуємо пройти автентифікацію за допомогою відбитка пальця, який не зареєстрований на цьому пристрої:

  • Ще раз торкніться кнопки "Автентифікувати за допомогою відбитка пальця".
  • Якщо ви використовуєте AVD, тоді виберіть відбиток цього пальця за допомогою вікна «Розширені елементи керування» ні зареєстровано на цьому пристрої; Я використовую "Палець 2." Натисніть кнопку "Торкніться сенсора".
  • Якщо ви використовуєте фізичний смартфон або планшет Android, тоді натисніть і потримайте кінчик пальця щодо сенсорного датчика пристрою - переконайтеся, що ви використовуєте палець, який не зареєстрований на цьому пристрої!
  • Перевірте програму Logcat Android Studio, вона має відображати "Відбиток пальця не розпізнається".

Як уже було сказано, API BiometricPrompt автоматично обробляє надмірні невдалі спроби аутентифікації. Щоб перевірити цю функціональність:

  • Торкніться кнопки "Автентифікувати за допомогою відбитка пальця" програми.
  • Спроба аутентифікувати кілька разів у швидкій послідовності, використовуючи незареєстрований відбиток пальця.
  • Після кількох спроб діалогове вікно має закритися автоматично. Перевірте Logcat Android Studio, і ви побачите таке: "Виникла помилка, яку не можна отримати".

Ви можете завантажити повну заявку з GitHub.

Підведенню

У цій статті ми дослідили новий BiometricPrompt API Android Pie, який дозволяє легко додавати автентифікацію відбитків пальців у ваш додаток. Як ви вважаєте, BiometricPrompt - це вдосконалення попередніх методів аутентифікації відбитків пальців Android? Повідомте нас у коментарях нижче!

Galaxy A50 підбирає градієнтний стиль M30 і надає йому досить привабливий відтінок веселки. Телефон виглядає чудово і обов'язково повертатиме голову. amung вирішила використовувати пластик навколо...

Оновлення, 13 червня 2019 р. (16:55 ET): Смартфон amung Galaxy A50 вже дебютує в США. Якщо ви вирушите до інтернет-магазину Verizon, ви можете захопити Galaxy A50 за низькою ціною 350 доларів. Випуска...

Рекомендований