失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android 实现指纹识别demo

Android 实现指纹识别demo

时间:2020-06-26 05:21:54

相关推荐

Android 实现指纹识别demo

demo链接:/download/meixi_android/10796468

1、指纹工具类:

/*** 作者:created by meixi* 邮箱:13164716840@* 日期:/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/>&nbsp;&nbsp;&nbsp;&nbsp;* 指纹验证失败后,指纹传感器不会立即关闭指纹验证,系统会提供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》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。