투케이2K

172. (AndroidStudio/android/java) FINGERPRINT 사용해 face id 지문 인증 기능 구현 실시 본문

Android

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. 지문인증 기능을 사용하기 위해서는 안드로이드 시스템 설정 내에 보안 설정 >> 잠금 설정 >> 지문 설정이되어야합니다

* */

/* =========================== */

/* =========================== */

[첨부 파일]

소스코드.txt
0.03MB

/* =========================== */

 

반응형
Comments