BiometricPrompt를 사용하여 앱에 지문 인증 추가

작가: Lewis Jackson
창조 날짜: 13 할 수있다 2021
업데이트 날짜: 1 칠월 2024
Anonim
Android 앱에서 생체 인증을 구현하는 방법은 무엇입니까? -완전한 소스 코드
동영상: Android 앱에서 생체 인증을 구현하는 방법은 무엇입니까? -완전한 소스 코드

콘텐츠


BiometricPrompt API를 사용하여 사용자가 지문을 사용하여 자신의 신원을 확인할 수있는 앱을 만듭니다.

“빈 활동”템플릿을 사용하여 Android Studio를 열고 새 프로젝트를 만듭니다. 메시지가 표시되면 프로젝트의 최소 SDK를 28 이상으로 설정하십시오. 그러면 Android Pie 이전 버전에 애플리케이션이 설치되지 않습니다.

더 넓은 범위의 Android 기기에서 앱에 액세스 할 수있게하려면 현재 애플리케이션이 설치된 Android 버전을 확인한 다음 기기의 API 수준에 따라 생체 인증을 다르게 처리해야합니다.

생체 인식 라이브러리 추가

시작하려면 모듈 수준 build.gradle 파일을 열고 최신 버전의 Biometric 라이브러리를 프로젝트 종속성으로 추가하십시오.

의존성 {구현 androidx.biometric : biometric : 1.0.0-alpha03

USE_BIOMETRIC 권한 추가

BiometricPrompt API를 사용하면 단일 권한을 통해 장치가 지원하는 다른 모든 생체 인증 방법을 활용할 수 있습니다.

프로젝트의 매니페스트를 열고 "USE_BIOMETRIC"권한을 추가하십시오.

응용 프로그램의 레이아웃 만들기

다음으로 애플리케이션의 레이아웃을 만들어 봅시다. 탭하면 지문 인증 대화 상자를 시작하는 단일 버튼을 추가하겠습니다.

프로젝트의 strings.xml 파일을 열고 "auth"문자열 리소스를 추가하십시오.


생체 인식 샘플 샘플 지문으로 인증

사용자의 신원 인증

이제 BiometricPrompt를 사용하여 사용자의 신원을 인증하는 방법을 살펴 보겠습니다.

생체 인식 프롬프트 인스턴스 생성

BiometricPrompt 클래스에는 BiometricPrompt 인스턴스를 작성하고 인증을 시작하는 데 사용할 수있는 컴패니언 Builder () 클래스가 포함되어 있습니다.

최종 BiometricPrompt.PromptInfo promptInfo = 새로운 BiometricPrompt.PromptInfo.Builder ()

BiometricPrompt 인스턴스를 구축 할 때 인증 대화 상자에 표시 할 텍스트를 정의하고 사용자가 인증을 취소 할 수있는 버튼 인 "음수 버튼"을 사용자 정의해야합니다.

인증 대화 상자를 구성하려면 다음을 제공해야합니다.

  • setTitle. 지문 인증 프롬프트의 제목입니다. (필수)
  • setSubtitle. 지문 인증 프롬프트의 자막 (선택 과목)
  • setDescription. 인증 대화 상자에 표시되는 추가 설명입니다. (선택 과목)
  • setNegativeButton (text, executor, listener)입니다. 음수 버튼의 레이블입니다 (예 : "취소"또는 "종료"). 음수 버튼을 구성 할 때 사용자가 인증 대화 상자를 닫을 수 있도록 Executor 인스턴스와 OnClickListener를 제공해야합니다.

작성 당시에는 인증 대화 상자에 사용 된 아이콘이나 오류를 사용자 정의 할 수 없었습니다.


마지막으로 build ()를 호출해야합니다. 이것은 우리에게 다음을 제공합니다.

final BiometricPrompt.PromptInfo promptInfo = 새로운 BiometricPrompt.PromptInfo.Builder () .setTitle ( "제목 텍스트는 여기에 있습니다") .setSubtitle ( "자막은 여기에 있습니다") .setDescription ( "이것은 설명입니다") .setNegativeButtonText ( "취소") .짓다();

인증 콜백 처리

BiometricPrompt 인스턴스에는 인증 프로세스 결과에 대해 앱에 알리는 일련의 인증 콜백 메소드가 할당됩니다.

이러한 콜백을 모두 BiometricPrompt.AuthenticationCallback 클래스 인스턴스로 래핑해야합니다.

final BiometricPrompt myBiometricPrompt = 새로운 BiometricPrompt (활동, newExecutor, 새로운 BiometricPrompt.AuthenticationCallback () {

다음 단계는 다음 콜백 메소드 중 일부 또는 전부를 구현하는 것입니다.

1. onAuthenticationSucceeded ()

이 방법은 지문이 장치에 등록 된 지문 중 하나와 성공적으로 일치 할 때 호출됩니다. 이 시나리오에서 AuthenticationResult 객체는 onAuthenticationSucceeded 콜백으로 전달되고 앱은이 성공적인 인증에 대한 응답으로 작업을 수행합니다.

일을 단순하게 유지하기 위해 앱은 Android Studio의 Logcat에 인쇄하여 응답합니다.

@public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult 결과 재정의) {super.onAuthenticationSucceeded (result); 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); }

마지막으로 BiometricPrompt 인스턴스의 authenticate () 메소드를 호출해야합니다.

myBiometricPrompt.authenticate (promptInfo);

Android Pie의 생체 인증 구현

위 단계를 모두 완료하면 MainActivity가 다음과 같아야합니다.

import androidx.appcompat.app.AppCompatActivity; androidx.biometric.BiometricPrompt 가져 오기; android.os.Bundle 가져 오기; import java.util.concurrent.Executor; import java.util.concurrent.Executors; androidx.fragment.app.FragmentActivity를 가져옵니다. import android.util.Log; import android.view.View; import androidx.annotation.NonNull; 공용 클래스 MainActivity 확장 AppCompatActivity {개인 정적 최종 문자열 TAG = MainActivity.class.getName (); @Override protected void onCreate (번들 저장 인스턴스 상태) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); // 단일 스레드로 스레드 풀 생성 // Executor newExecutor = Executors.newSingleThreadExecutor (); FragmentActivity 활동 =이; // 인증 이벤트 수신 시작 // 최종 BiometricPrompt myBiometricPrompt = new BiometricPrompt (activity, newExecutor, new BiometricPrompt.AuthenticationCallback () {@Override // 치명적인 오류가 발생하면 onAuthenticationError가 호출됩니다 .// public void onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {// Logcat // Log.d (TAG, "복구 할 수없는 오류가 발생했습니다"에 인쇄);}} // 지문이 성공적으로 일치하면 // onAuthenticationSucceeded가 호출됩니다 .// @Public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult 결과 무시) {super.onAuthenticationSucceeded (result); // Logcat에 인쇄 // Log.d (TAG, "지문 인식 성공 ");} //// 지문이 일치하지 않으면 onAuthenticationFailed가 호출됩니다 .// @Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); cat // Log.d (TAG, "지문이 인식되지 않습니다"); }}); // BiometricPrompt 인스턴스 생성 // final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // 대화 상자에 텍스트 추가 // .setTitle ( "Title text goes here") .setSubtitle ( "Subtitle goes here" ) .setDescription ( "이것은 설명입니다.") .setNegativeButtonText ( "Cancel") // 대화 상자 빌드 // .build (); // onClickListener를 앱의 "인증"버튼에 지정 // findViewById (R.id.launchAuthentication) .setOnClickListener (new View.OnClickListener () {@Public void onClick (View v) 재정의 {myBiometricPrompt.authenticate (promptInfo);} }); }}

프로젝트 테스트

이제 프로젝트를 만들었으니 이제 테스트를 해보고 실제로 앱에 지문 인증을 추가했는지 확인하십시오!

이 프로젝트를 실행하려면 Android Pie를 실행하는 실제 스마트 폰 또는 태블릿 또는 Android P 미리보기 이상을 사용하는 AVD (Android Virtual Device)가 필요합니다.

또한 기기에 지문을 하나 이상 등록해야합니다. 실제 Android 기기를 사용하는 경우 :

  • 아직 설정하지 않은 경우 PIN, 비밀번호 또는 패턴으로 잠금 화면을 보호하십시오 ( "설정> 화면 및 보안 잠금> 화면 잠금 유형> 패턴 / 핀 / 암호"로 이동 한 후 화면 지침에 따라).
  • 기기의 '설정'애플리케이션을 시작합니다.
  • "화면 및 보안 잠금"을 선택하십시오.
  • "지문 스캐너"를 선택하십시오.
  • 지침에 따라 하나 이상의 지문을 등록하십시오.

Android 가상 기기에는 물리적 터치 센서가 없으므로 터치 이벤트를 시뮬레이션해야합니다.

  • AVD를 아직 시작하지 않은 경우 시작하십시오.
  • AVD와 함께 버튼 스트립이 표시됩니다. 커서가 다음 스크린 샷에있는 3 점 "기타"버튼을 찾아 클릭하십시오. “Extended Controls”창이 시작됩니다.
  • 확장 제어 창에서 "지문"을 선택하십시오. 그러면 다양한 터치 이벤트를 에뮬레이트 할 수있는 제어 세트가 열립니다.
  • 드롭 다운 메뉴를 열고이 장치에 등록 할 지문을 선택하십시오. “손가락 1”을 사용하고 있습니다.
  • 이제 에뮬레이트 된 장치로 관심을 전환 해 봅시다. AVD의 "설정"응용 프로그램을 시작하고 "보안 및 위치"를 선택하십시오.
  • PIN, 비밀번호 또는 패턴을 아직 설정하지 않은 경우 "화면 잠금"을 선택하고 화면 지침에 따라 잠금 화면을 고정한 다음 기본 "설정> 보안 및 위치"화면으로 돌아갑니다.
  • "지문"과 "지문 추가"를 차례로 선택하십시오.
  • 이제 손가락을 터치 센서로 누르라는 메시지가 나타납니다. 대신 "지문이 추가되었습니다"가 나타날 때까지 "센서 터치"를 계속 클릭하십시오.

  • "완료"를 클릭하십시오.
  • 추가 지문을 등록하려면 위의 단계를 헹구고 반복하십시오.

지문을 하나 이상 등록하면 응용 프로그램을 테스트 할 준비가 된 것입니다. 애플리케이션이 세 가지 시나리오를 처리하는 방법을 테스트하겠습니다.

  • 사용자는 등록 된 지문을 사용하여 인증을 시도합니다.
  • 사용자가이 기기에 등록되지 않은 지문을 사용하여 인증을 시도합니다.
  • 사용자는 등록되지 않은 지문을 사용하여 여러 번 빠르게 연속해서 인증을 시도합니다.

기기에 방금 등록한 지문을 사용하여 인증을 시도해 보겠습니다.

  • 여기에는 애플리케이션의 다양한 항목이 표시되므로 Android Studio의 Logcat Monitor를보고 있는지 확인하십시오.

  • 테스트 장치에 응용 프로그램을 설치하십시오.
  • 애플리케이션의 "지문으로 인증"버튼을 누릅니다. 지문 인증 대화 상자가 나타납니다.
  • 실제 기기를 사용하는 경우 기기의 터치 센서에 손가락을 대고 있습니다. AVD를 사용하는 경우 "센서 터치"버튼을 사용하여 터치 이벤트를 시뮬레이션하십시오.
  • Logcat 모니터를 확인하십시오. 인증에 성공하면 다음과 같은 메시지가 표시됩니다. "지문이 인식되었습니다"

다음으로이 기기에 등록되지 않은 지문을 사용하여 인증을 시도하면 어떻게되는지 살펴 보겠습니다.

  • 앱의 "지문으로 인증"버튼을 다시 누릅니다.
  • AVD를 사용하는 경우 "확장 컨트롤"창을 사용하여 지문을 선택하십시오. 그렇지 않다 이 장치에 등록되어 있습니다. “Finger 2”를 사용하고 있습니다.“센서 터치”버튼을 클릭하십시오.
  • 실제 Android 스마트 폰 또는 태블릿을 사용하는 경우 기기의 터치 센서에 손가락을 대고 길게 누르십시오.이 기기에 등록되지 않은 손가락을 사용하고 있는지 확인하십시오!
  • Android Studio의 Logcat을 확인하면 이제 "지문이 인식되지 않습니다"가 표시됩니다.

이미 언급했듯이 BiometricPrompt API는 실패한 과도한 인증 시도를 자동으로 처리합니다. 이 기능을 테스트하려면

  • 앱의 "지문으로 인증"버튼을 누릅니다.
  • 등록되지 않은 지문을 사용하여 연속해서 여러 번 빠르게 인증을 시도하십시오.
  • 몇 번의 시도 후에 대화 상자가 자동으로 닫힙니다. Android Studio의 Logcat을 확인하면 다음과 같은 메시지가 표시됩니다. "복구 할 수없는 오류가 발생했습니다."

GitHub에서 전체 애플리케이션을 다운로드 할 수 있습니다.

마무리

이 기사에서는 앱에 지문 인증을 쉽게 추가 할 수있는 Android Pie의 새로운 BiometricPrompt API를 살펴 보았습니다. BiometricPrompt가 Android의 이전 지문 인증 방법에서 개선되었다고 생각하십니까? 아래 의견에 알려주십시오!

Amazon Echo Dot (2 세대)은 꽤 오랫동안 시장에 출시되어 왔지만 지금은 특히 Google Home 및 Amazon Echo war 가열에서이 기즈모를 살펴보아야 할 때가되었습니다. Google I / O 2017의 Google 어시스턴트 발표 덕분에 하드 코어가 향상되었습니다....

Google Duo는 특히 웹에서 화상 통화를 할 수있게되면서 누군가에게 화상 통화를 원하는 사람들에게 더욱 인기있는 옵션이되었습니다. 그러나 현재 Google은 Duo의 음성 통화 기능을 확장하고 있습니다. 트위터에서 사용자가 발견 한대로 이제 집 스피커에서 Google Duo 오디오 통화를 시작하고 응답 할 수 있습니다.안드로이드 경찰)....

신선한 게시물