博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用Android-FingerprintManager类实现指纹识别
阅读量:4671 次
发布时间:2019-06-09

本文共 2621 字,大约阅读时间需要 8 分钟。

安卓指纹识别

利用FingerprintManager主类进行指纹识别。

在安卓6.0中新增了API,FingerprintManager类,它是Google提供的帮助访问指纹硬件的API类

新增API权限的过程如下

ContextCompact.checkSelfPermission  // 检查APP是否拥有某权限   ActivityCompat.requestPermissions()  // 如果没有就去申请   onRequestPermissionResult()  //异步执行回调结果   ActivityCompat.shouldShowRequestPermissionRationale // 用于给用户解释权限用途

AndroidManifest权限声明

FingerprintManager类

三个主要方法

  1. authenticate(...) 启动指纹识别
  2. hasEnrolledFingerprints() 判断是否录入有指纹
  3. isHardwareDetected() 判断是否有硬件支持

实现要点

1 . 判断是否硬件支持

if (!mManager.isHardwareDetected()) {       Toast.makeText(mContext, "没有指纹识别模块", Toast.LENGTH_SHORT).show();       return false;     }

2 . 检查手机是否已录入指纹

if (!mManager.hasEnrolledFingerprints()) {    Toast.makeText(mContext, "没有指纹录入", Toast.LENGTH_SHORT).show();    return false;}

3 . 创建指纹开启的回调方法

这里就该引入上面所说的FingerprintManager的三个内部类了

①FingerPrintManager.AuthenticationCallback:

在验证时传入该接口,通过该接口来返回验证指纹的结果

②FingerPrintManager.AuthenticationResult:

当指纹验证正确时,接口里返回的参数

③FingerPrintManager.CryptoObject:

由FingerPrintManager支持的封装加密对象的类

只要指纹识别的结果,只需要AuthenticationCallback类即可。

这一步我们就创建AuthenticationCallback类对象。

FingerprintManager.AuthenticationCallback mSelfCancelled = new FingerprintManager.AuthenticationCallback() {    @Override    public void onAuthenticationError(int errorCode, CharSequence errString) {        //多次指纹密码验证错误后,进入此方法;并且,不可再验(短时间)        //errorCode是失败的次数        ToastUtils.show(mContext, "尝试次数过多,请稍后重试", 3000);    }    @Override    public void onAuthenticationHelp(int helpCode, CharSequence helpString) {        //指纹验证失败,可再验,可能手指过脏,或者移动过快等原因。    }    @Override    public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {        //指纹密码验证成功    }    @Override    public void onAuthenticationFailed() {        //指纹验证失败,指纹识别失败,可再验,错误原因为:该指纹不是系统录入的指纹。    }};

4 . 开启指纹识别

只需要传参即可。

mManager.authenticate(null, mCancellationSignal, 0, mSelfCancelled, null);

扩展小猫粮:

一. authenticate参数说明

/** * 参数说明: * FingerprintManager.CryptoObject - 用于通过指纹验证取出AndroidKeyStore中的key的对象,用于加密 * CancellationSignal - 用来取消指纹验证,如果想手动关闭验证,可以调用该参数的cancel方法 * int - 没什么意义,就是传0就好了 * FingerprintManager.AuthenticationCallback -  最重要,由于指纹信息是存在系统硬件中的,app是不可以访问指纹信息的,所以每次验证的时候,系统会通过这个callback告诉你是否验证通过、验证失败等 * Handler - FingerPrint中的消息都通过这个Handler来传递消息,如果你传空,则默认创建一个在主线程上的Handler来传递消息,没什么用,传null好了 */public void authenticate(FingerprintManager.CryptoObject crypto, CancellationSignal cancel, int flags, FingerprintManager.AuthenticationCallback callback, Handler handler)

但我们今天不站队,而是从另外一个“诡异”视角,去审视一下什么是生命,什么是人工智能

想象一下你获得了一种能力——你的梦境是连续的,每天睡着之后,你都会来到一个与现实世界不同、但与前一天的梦境相同的环境中。

转载于:https://www.cnblogs.com/LexMoon/p/FingerprintManager.html

你可能感兴趣的文章
轻松学SQL Server数据库pdf
查看>>
Oracle 日期查询
查看>>
说说今年的计划
查看>>
把discuzX 的用户登录信息添加到纯静态页面
查看>>
文件大小计算
查看>>
iOS:给图片置灰色
查看>>
Java 8 (5) Stream 流 - 收集数据
查看>>
ubuntu下安装JDK
查看>>
【C#】使用DWM实现无边框窗体阴影或全透窗体
查看>>
【MySql】脚本备份数据库
查看>>
keil5 配置 stm32f103rc 软件仿真
查看>>
RESTful到底是什么玩意??
查看>>
Oracle创建视图的一个问题
查看>>
(一)线性表
查看>>
hdu 1003 Max Sum (DP)
查看>>
mysql增备
查看>>
[APIO2015]雅加达的摩天楼
查看>>
andorid之帧布局FrameLayout
查看>>
(转,记录用)jQuery页面加载初始化的3种方法
查看>>
C++常量的引用 const
查看>>