투케이2K
172. (AndroidStudio/android/java) FINGERPRINT 사용해 face id 지문 인증 기능 구현 실시 본문
172. (AndroidStudio/android/java) FINGERPRINT 사용해 face id 지문 인증 기능 구현 실시
투케이2K 2021. 7. 6. 09:31/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : AndroidStudio
개발 언어 : java
/* =========================== */
/* =========================== */
[소스 코드]
public void FingerStart(){
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ //TODO [마시멜로우 안드로이드 6.0 부터 사용 가능]
//TODO [Manifest에 Fingerprint 퍼미션을 추가해 워야 사용가능]
fingerprintManager = (FingerprintManager) getSystemService(FINGERPRINT_SERVICE);
keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
String comment = "";
//TODO [지문을 사용할 수 없는 디바이스인 경우]
if(!fingerprintManager.isHardwareDetected()){
comment = "지문을 사용할 수 없는 디바이스 입니다 ....";
Log.d("---","---");
Log.e("//===========//","=====================");
Log.d("","\n"+"[A_Finger > FingerStart() 메소드 : 모바일 버전 확인 및 지문인증 수행 실시]");
Log.d("","\n"+"[실행 : "+String.valueOf(comment)+"]");
Log.e("//===========//","=====================");
Log.d("---","---");
// [Alert 팝업창 알림 실시]
getAlertDialog("[지문 인증 실행]",
comment,
"확인", "취소", "");
}
//TODO [지문 인증 사용을 거부한 경우]
else if(ContextCompat.checkSelfPermission(this,
Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED){
comment = "지문 인증 사용을 허용해 주세요 ....";
Log.d("---","---");
Log.e("//===========//","=====================");
Log.d("","\n"+"[A_Finger > FingerStart() 메소드 : 모바일 버전 확인 및 지문인증 수행 실시]");
Log.d("","\n"+"[실행 : "+String.valueOf(comment)+"]");
Log.e("//===========//","=====================");
Log.d("---","---");
// [Alert 팝업창 알림 실시]
getAlertDialog("[지문 인증 실행]",
comment,
"확인", "취소", "");
}
//TODO [잠금 설정에 등록된 지문이 없는 경우]
else if(!keyguardManager.isKeyguardSecure()){
comment = "잠금화면을 설정해 주세요.";
//Toast_Nomal(comment);
Log.d("---","---");
Log.e("//===========//","=====================");
Log.d("","\n"+"[A_Finger > FingerStart() 메소드 : 모바일 버전 확인 및 지문인증 수행 실시]");
Log.d("","\n"+"[실행 : "+String.valueOf(comment)+"]");
Log.e("//===========//","=====================");
Log.d("---","---");
// [Alert 팝업창 알림 실시]
getAlertDialog("[지문 인증 실행]",
comment,
"확인", "취소", "");
}
//TODO [잠금 설정에 등록된 지문이 없는 경우]
else if(!fingerprintManager.hasEnrolledFingerprints()){
comment = "잠금 설정에 등록된 지문이 없습니다 ...";
Log.d("---","---");
Log.e("//===========//","=====================");
Log.d("","\n"+"[A_Finger > FingerStart() 메소드 : 모바일 버전 확인 및 지문인증 수행 실시]");
Log.d("","\n"+"[실행 : "+String.valueOf(comment)+"]");
Log.e("//===========//","=====================");
Log.d("---","---");
// [Alert 팝업창 알림 실시]
getAlertDialog("[지문 인증 실행]",
comment,
"확인", "취소", "");
}
//TODO [모든 관문을 성공적으로 통과 (지문인식을 지원하고 지문 사용이 허용되어 있고 잠금화면이 설정되었고 지문이 등록되어 있을때)]
else {
comment = "손가락을 지문인식 센서에 대 주세요.";
Log.d("---","---");
Log.w("//===========//","=====================");
Log.d("","\n"+"[A_Finger > FingerStart() 메소드 : 모바일 버전 확인 및 지문인증 수행 실시]");
Log.d("","\n"+"[실행 : "+String.valueOf(comment)+"]");
Log.w("//===========//","=====================");
Log.d("---","---");
//TODO [지문 인증 실행]
generateKey();
if(cipherInit()){
cryptoObject = new FingerprintManager.CryptoObject(cipher);
// [핸들러 실행]
C_FingerprintHandler fingerprintHandler = new C_FingerprintHandler(this);
fingerprintHandler.startAutho(fingerprintManager, cryptoObject);
}
// [Alert 팝업창 알림 실시]
getAlertDialog("[지문 인증 실행]",
comment,
"확인", "취소", "");
}
}
else{ //TODO [디바이스가 마시멜로 이하인 경우]
String comment = "지문인식 기능을 지원하지 않는 하위 디바이스입니다 ....";
Log.d("---","---");
Log.e("//===========//","=====================");
Log.d("","\n"+"[A_Finger > FingerStart() 메소드 : 모바일 버전 확인 및 지문인증 수행 실시]");
Log.d("","\n"+"[실행 : "+String.valueOf(comment)+"]");
Log.e("//===========//","=====================");
Log.d("---","---");
// [Alert 팝업창 알림 실시]
getAlertDialog("[지문 인증 실행]",
comment,
"확인", "취소", "");
}
}
/* =========================== */
/* =========================== */
[결과 출력]
[보안 설정 (전)]
[보안 설정 (후)]
[지문 인증 실행]
/* =========================== */
/* =========================== */
[요약 설명]
/**
* [필요한 퍼미션]
* <uses-permission android:name="android.permission.USE_FINGERPRINT" />
* <uses-permission android:name="android.permission.USE_BIOMETRIC"/>
* */
/**
* [제약 조건]
* 1. 안드로이드 디바이스 기기내 지문인증 기능을 사용하기 위해서는 마시멜로 버전 이상이어야합니다
* 2. 지문인증 기능을 사용하기 위해서는 안드로이드 시스템 설정 내에 보안 설정 >> 잠금 설정 >> 지문 설정이되어야합니다
* */
/* =========================== */
/* =========================== */
[첨부 파일]
/* =========================== */