简单实现 Android M 指纹识别(附源码)
来源:互联网 发布:p2717h 知乎 编辑:程序博客网 时间:2024/04/20 14:11
众所周知,
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() { /** * 指纹识别成功 */ @Override public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) { tv_log.setText("指纹识别成功"); } /** * 识别失败 */ @Override public void onAuthenticationFailed() { tv_log.setText("指纹识别失败"); } /** * Msg监听 * @param helpMsgId Msg码 * @param helpString Msg文案 */ @Override public 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 剩余禁用时间 */ @Override public 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(); }}
细心的同学可能发现了,
上面贴的的效果图里,
有一个提示性动画,
这里的代码却一点没说这事儿,
因为我觉得,
大家来到这里也不是为了这个动画,
这个只是我加上的辅助功能,
想研究下这个动画的同学,
可以下载源码来阅读,
谢谢。
尘少老规矩,附源码:
http://download.csdn.net/download/bamboy_/9782241
如果觉得尘少的Demo还不错的话,
可以克隆我的Git仓库,
各种酷炫效果收入囊中:
https://github.com/Bamboy120315/bamboy.git
手机扫码下载App一睹为快:
7 0
- 简单实现 Android M 指纹识别(附源码)
- 简单实现 Android M 指纹识别(附源码)
- Android增量升级简单实现(附源码)
- Android增量升级简单实现(附源码)
- android指纹识别源码
- 超简单实现Android自定义Toast(附源码)
- Android 简单实现View自动换行(附源码)
- Android 简单实现View自动换行(附源码)
- 超简单实现Android自定义Toast(附源码)
- 超简单实现Android自定义Toast(附源码)
- Android 简单指纹识别
- Android指纹识别的简单用法
- ListView简单实现分页加载(附源码)
- ListView简单实现分页加载(附源码)
- Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)
- Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)
- Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)
- Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)
- 微信小程序用户数据的签名验证和加解密
- Android商城App购物车规格联动选择
- L1-012. 计算指数 java
- Memcached+magent集群安装及错误处理
- com.sun.faces.config.ConfigureListener
- 简单实现 Android M 指纹识别(附源码)
- JavaScript创建对象模式
- Vijos 1565 多边形 【区间DP】
- php 中的数组类型
- Vue路由开启keep-alive时的注意点
- 从.properties配置文件中读取url路径(jdbc的参数和接口请求url)
- mysql_general_log(查看mysql执行历史)
- 设计模式概要简介
- 最经典的25本Python编程开发电子书(附下载地址)!