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相关推荐
- 安卓指纹识别demo
安卓指纹识别demo 指纹识别作为最新兴起的用户身份验证机制,已经被越来越多的应用程序所采用,相比传统的密码九宫格等验证方法,指纹识别更加安全,如今越来越多的安卓手机配备了指纹识别模块,我们就来尝试一 ...
- Android O指纹识别解析
版权声明:本文为梦想全栈程序猿原创文章,转载请附上原文出处链接和本声明 前面一片文章--Android Fingerprint完全解析(三) :Fingerprint Hal层分析 Android O ...
- Android中指纹识别的使用
/ 今日科技快讯 / 近日,微软斥资75亿美元收购了游戏发行商ZeniMax Media,后者旗下的游戏工作室曾推出<毁灭战士>以及<辐射>等知名游戏.这使得微软旗下的 ...
- android开发-指纹识别
在Android 6.0中google终于给Android系统加上了指纹识别的支持,这个功能在iPhone上早就已经实现了,并且在很多厂商的定制的ROM中也都自己内部实现这个功能了,这个功能来的有点晚 ...
- 简单实现 Android M 指纹识别(附源码)
众所周知, Android阵营里的指纹兼容真可谓是一团糟, 每个厂家几乎都有一套自己的API, 直到Android M的出现, 才慢慢地走上正途. 那么今天我们就一起来探讨一下, Android M里 ...
- Android开发 指纹识别
1.添加指纹识别权限: <uses-permission android:name="android.permission.USE_FINGERPRINT"/> 2.获 ...
- android华为指纹识别开发,华为正在研发“全屏指纹识别+屏下摄像头”共存机型...
原标题:华为正在研发"全屏指纹识别+屏下摄像头"共存机型 信息显示9月1日中兴将全球首发屏幕下摄像头机型A20 5G,此前业内传言这项技术是华为首发.从现在看来是不可能了,一来中兴 ...
- Android随笔-指纹识别
Android指纹识别在Android 6.0以下是不支持的,Android 6.0使用FingerprintManager进行指纹识别,Android 9.0建议使用BiometricPrompt进 ...
- Android使用指纹识别功能
指纹识别是在Android 6.0以后新增的功能,在使用的时候需要先判断手机的系统版本是否支持指纹识别. AndroidManifest添加权限 <uses-permission android ...
最新文章
- 【java】兴唐第三十一节课之反射
- leetcode算法题--叶值的最小代价生成树
- 想了解推荐系统最新研究进展?请收好这16篇论文
- OpenCV跟踪支持的实例(附完整源代码)
- 100个Web开发资源(收藏)
- ie11不兼容 html编辑器,ie11兼容性视图护驾浏览网页
- 砥志研思SVM(一) 最优间隔分类器问题(上):硬间隔SVM
- 风格指南——Solidity中文文档(10)
- android 获取当前输入法,关于获取安卓手机系统输入法和设置输入法
- 火热的 Web 3,究竟离我们有多远?
- 怎样对php使用systemctl启动,Centos7 配置php-fpm服务到systemctl
- Spring源码之bean的加载(三)从bean中获取对象
- 在写事件函数的时候function(e)当中的e是什么意思
- Java区块链视频教程百度云_JAVA区块链项目实战视频课程区块链入门与去中心化应用实战视频课程网盘下载...
- Java线程状态RUNNABLE详解
- 图像处理--轮廓介绍及特征
- 权重股启动意味着什么
- 富军:史玉柱鲜为人知的网络营销震撼策略!
- Linux笔记------关闭系统漏洞补丁(spectre meltdown补丁)
- 移动终端课程设计——校园淘二手交易APP
热门文章
- [css] 怎样把一个div居中?怎样把一个浮动元素居中?怎样把绝对定位的div居中?
- 工作83:wacch的使用
- spring mvc学习(36):jstl的jar包的下载
- java学习(172): 使用class实现反射编程,创建对象
- java学习(77):GUL下拉菜单框和滚动条
- java学习(44):引用参数传递
- php json传输被过滤,php-the_content过滤器,用于将自定义字段添加到JSON响应
- matlab变压器损耗仿真,基于Matlab的变压器运行特性仿真专题报告.docx
- Webpack基础之插件
- 计算机管理器win8.1,没事折腾?Win8.1文件管理器设置几招