Android 实现指纹识别demo
生活随笔
收集整理的這篇文章主要介紹了
Android 实现指纹识别demo
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
demo鏈接:https://download.csdn.net/download/meixi_android/10796468
1、指紋工具類:
/*** 作者:created by meixi* 郵箱:13164716840@163.com* 日期:2018/8/30 09*/public class FingerprintManagerUtil {private static FingerprintManagerCompat fingerprintManagerCompat;private static CancellationSignal cancellationSignal;private FingerprintManagerUtil() {}/*** 開始進行指紋驗證** @param context 上下文* @param fingerprintListener 指紋驗證回調接口*/public static void startFingerprinterVerification(Context context, final FingerprintListener fingerprintListener) {fingerprintManagerCompat = FingerprintManagerCompat.from(context);// 是否支持指紋驗證if (fingerprintManagerCompat == null || !fingerprintManagerCompat.isHardwareDetected()) {if (fingerprintListener != null)fingerprintListener.onNonsupport();return;}// 是否錄入了指紋if (!fingerprintManagerCompat.hasEnrolledFingerprints()) {if (fingerprintListener != null)fingerprintListener.onEnrollFailed();return;}// 回調可以開始進行認證if (fingerprintListener != null)fingerprintListener.onAuthenticationStart();cancellationSignal = new CancellationSignal();fingerprintManagerCompat.authenticate(null, 0, cancellationSignal, new FingerprintManagerCompat.AuthenticationCallback() {@Overridepublic void onAuthenticationError(int errMsgId, CharSequence errString) {// 驗證出錯回調,指紋傳感器會關閉一段時間super.onAuthenticationError(errMsgId, errString);if (fingerprintListener != null)fingerprintListener.onAuthenticationError(errMsgId, errString);}@Overridepublic void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {// 驗證幫助回調super.onAuthenticationHelp(helpMsgId, helpString);if (fingerprintListener != null)fingerprintListener.onAuthenticationHelp(helpMsgId, helpString);}@Overridepublic void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {// 驗證成功super.onAuthenticationSucceeded(result);if (fingerprintListener != null)fingerprintListener.onAuthenticationSucceeded(result);}@Overridepublic void onAuthenticationFailed() {// 驗證失敗 指紋驗證失敗后,指紋傳感器不會立即關閉指紋驗證,// 系統會提供5次重試的機會,即調用5次onAuthenticationFailed()后,才會調用onAuthenticationError()super.onAuthenticationFailed();if (fingerprintListener != null)fingerprintListener.onAuthenticationFailed();}}, null);}/*** 取消指紋驗證*/public static void cancel() {if (cancellationSignal != null && !cancellationSignal.isCanceled())cancellationSignal.cancel();}/*** 指紋驗證回調監聽*/public interface FingerprintListener {/*** 手機或系統不支持指紋驗證時回調*/void onNonsupport();/*** 手機支持指紋驗證,但是還沒有錄入指紋時回調*/void onEnrollFailed();/*** 可以進行指紋驗證時回調,該方法主要作用用于在進行指紋驗證之前做一些操作,比如彈出對話框*/void onAuthenticationStart();/*** 指紋驗證成功時回調** @param result {@link FingerprintManagerCompat.AuthenticationResult} 對象*/void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result);/*** 驗證失敗時回調* <br/> * 指紋驗證失敗后,指紋傳感器不會立即關閉指紋驗證,系統會提供5次重試的機會,即調用* 5次 {@link #onAuthenticationFailed()} 后,才會調用 {@link #onAuthenticationError(int, CharSequence)}*/void onAuthenticationFailed();/*** 驗證出錯時回調,指紋傳感器會關閉一段時間,具體時間根據廠商不同有所區別** @param errMsgId 錯誤信息id* @param errString 錯誤信息描述*/void onAuthenticationError(int errMsgId, CharSequence errString);/*** 驗證幫助回調** @param helpMsgId 幫助信息id* @param helpString 幫助信息描述*/void onAuthenticationHelp(int helpMsgId, CharSequence helpString);}/*** FingerprintListener 回調監聽適配器,減少不必要方法的重寫,只需要重寫需要處理的對應方法即可*/public abstract static class FingerprintListenerAdapter implements FingerprintListener {@Overridepublic void onNonsupport() {}@Overridepublic void onEnrollFailed() {}@Overridepublic void onAuthenticationStart() {}@Overridepublic void onAuthenticationFailed() {}@Overridepublic void onAuthenticationError(int errMsgId, CharSequence errString) {}@Overridepublic void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {}} }2、activity調用以及指紋識別驗證回調方法(調用后,觸摸手機指紋按鈕即可實現指紋識別)
private AlertDialog alertDialog; // 調用指紋驗證方法 private void startVerification() {FingerprintManagerUtil.startFingerprinterVerification(this,new FingerprintManagerUtil.FingerprintListenerAdapter() {@Overridepublic void onAuthenticationStart() {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this).setTitle("指紋驗證").setMessage("指紋驗證測試").setCancelable(false).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {FingerprintManagerUtil.cancel();}});alertDialog = builder.create();alertDialog.show();}@Overridepublic void onNonsupport() {Log.i("MainActivity", "onNonsupport");Toast.makeText(MainActivity.this, "不支持指紋驗證", Toast.LENGTH_SHORT).show();}@Overridepublic void onEnrollFailed() {Log.i("MainActivity", "onEnrollFailed");Toast.makeText(MainActivity.this, "沒有錄入指紋", Toast.LENGTH_SHORT).show();}@Overridepublic void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {alertDialog.dismiss();Log.i("MainActivity", "onAuthenticationSucceeded result = [" + result + "]");Toast.makeText(MainActivity.this, "驗證成功", Toast.LENGTH_SHORT).show();}@Overridepublic void onAuthenticationFailed() {Log.i("MainActivity", "onAuthenticationFailed");Toast.makeText(MainActivity.this, "驗證失敗", Toast.LENGTH_SHORT).show();}@Overridepublic void onAuthenticationError(int errMsgId, CharSequence errString) {Log.i("MainActivity", "onAuthenticationError errMsgId = [" + errMsgId + "], errString = [" + errString + "]");Toast.makeText(MainActivity.this, "提示: " + errString, Toast.LENGTH_SHORT).show();}@Overridepublic void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {Log.i("MainActivity", "onAuthenticationHelp helpMsgId = [" + helpMsgId + "], helpString = [" + helpString + "]");Toast.makeText(MainActivity.this, "提示: " + helpString, Toast.LENGTH_SHORT).show();}}); }需要指紋識別權限:
<uses-permission android:name="android.permission.USE_FINGERPRINT" />總結
以上是生活随笔為你收集整理的Android 实现指纹识别demo的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Fragment管理工具类
- 下一篇: Android侧滑删除-Recycler