失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 简单实现 Android M 指纹识别(附源码)

简单实现 Android M 指纹识别(附源码)

时间:2021-08-21 06:16:18

相关推荐

简单实现 Android M 指纹识别(附源码)

众所周知,

Android阵营里的指纹兼容真可谓是一团糟,

每个厂家几乎都有一套自己的API,

直到Android M的出现,

才慢慢地走上正途。

那么今天我们就一起来探讨一下,

Android M里指纹API的使用。

上效果:

由于录屏只能录到屏幕,

看不到两次用的分别是哪根手指,

所以大家多担待下。

想要实现其实还是很简单的,

第一步,

AndroidManifest.xml里加权限:

<!--指纹权限--><uses-permission android:name="android.permission.USE_FINGERPRINT" />

第二步,

准备工作,

需要的主要有一个工具类和两个方法:

工具类代码很简单,如下:

public class FingerUtil {private CancellationSignal signal;private FingerprintManagerCompat fingerprintManager;public FingerUtil(Activity activity) {signal = new CancellationSignal();fingerprintManager = FingerprintManagerCompat.from(activity);}public void startFingerListen(FingerprintManagerCompat.AuthenticationCallback callback) {fingerprintManager.authenticate(null, 0, signal, callback, null);}public void stopsFingerListen() {signal.cancel();signal = null;}}

然后就是两个方法,

第一个方法:

检测当前设备是否有指纹模块:

/*** 检测是否有指纹模块** @return 是否有指纹模块*/private boolean checkFingerModule() {try {FingerprintManager fingerManager = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE);return fingerManager.isHardwareDetected();} catch (Exception e) {return false;}}

第二个方法:

初始化指纹模块:

// 实例化指纹监听mFingerListen = new FingerprintManagerCompat.AuthenticationCallback() {/*** 指纹识别成功*/@Overridepublic void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {tv_log.setText("指纹识别成功");}/*** 识别失败*/@Overridepublic void onAuthenticationFailed() {tv_log.setText("指纹识别失败");}/*** Msg监听* @param helpMsgId Msg码* @param helpString Msg文案*/@Overridepublic void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {if (tv_log.getTag() != null && false == (Boolean) tv_log.getTag()) {return;}switch (helpMsgId) {case 1001:// 等待按下手指tv_log.setText("请按下手指");break;case 1002:// 手指按下tv_log.setText("正在识别…");break;case 1003:// 手指抬起tv_log.setText("手指抬起,请重新按下");break;}}/*** 多次指纹密码验证错误后,进入此方法;并且,不能短时间内调用指纹验证* @param errMsgId 错误码* @param errString 剩余禁用时间*/@Overridepublic void onAuthenticationError(int errMsgId, CharSequence errString) {switch (errMsgId) {case 5:// 可以进行识别tv_log.setTag(true);break;case 7:// 失败次数过多,禁用倒计时未结束tv_log.setText("失败次数过多!请" + errString + "秒后再试");break;}}};// 实例化工具类mFingerUtil = new FingerUtil(this);// 使用指纹监听监听mFingerUtil.startFingerListen(mFingerListen);}

准备工作完成,

剩下的就简单咯。

第三步——使用:

这一步就特别简单了:

try {// 初始化指纹按钮点击事件initFingerBtnClick();} catch (Exception e) {tv_log.setText("当前设备没有指纹识别模块\n或未遵循 Android M 指纹API规范");}

到这里基本就完成了,

但是有一点需要注意,

onStop()的时候一定要把指纹关闭,

以免一直占用指纹模块:

@Overrideprotected void onStart() {super.onStart();if (mFingerUtil != null && mFingerListen != null) {mFingerUtil.startFingerListen(mFingerListen);}}@Overrideprotected void onStop() {super.onStop();if (mFingerUtil != null) {mFingerUtil.stopsFingerListen();}}

细心的同学可能发现了,

上面贴的的效果图里,

有一个提示性动画,

这里的代码却一点没说这事儿,

因为我觉得,

大家来到这里也不是为了这个动画,

这个只是我加上的辅助功能,

想研究下这个动画的同学,

可以下载源码来阅读,

谢谢。

尘少老规矩,附源码:

/download/bamboy_/9782241

如果觉得尘少的Demo还不错的话,

可以克隆我的Git仓库,

各种酷炫效果收入囊中:

/Bamboy120315/bamboy.git

手机扫码下载App一睹为快:

如果觉得《简单实现 Android M 指纹识别(附源码)》对你有帮助,请点赞、收藏,并留下你的观点哦!

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