指纹识别

作者: zhengLH | 来源:发表于2018-01-26 16:39 被阅读12次

【参考链接】 http://blog.csdn.net/leafact/article/details/53791647

【详细分析链接】http://blog.csdn.net/createchance/article/details/51991764

 【demo链接】 http://blog.csdn.net/u011277123/article/details/53183209

【要点分析】

(1)背景:

Google官方支持指纹识别的标准接口是在Android6.0开始的,如果各个厂商都升级到6.0并且硬件上都给予支持,那么我们按照标准的指纹识别接口使用就可以了。

【用途】   系统解锁   应用锁   支付认证   普通的登录认证

(2)设备条件判断:

(A)设备是否支持指纹识别

(B)设备是否处于安全保护中(有指纹识别的手机,在使用指纹识别的时候,还需要强制设置密码或图案解锁,如果未设置的话是不许使用指纹识别的)

【解释】这个条件的意思是,你的设备必须是使用屏幕锁保护的,这个屏幕锁可以是password,PIN或者图案都行。为什么是这样呢?因为google原生的逻辑就是:想要使用指纹识别的话,必须首先使能屏幕锁才行,这个和android 5.0中的smart lock逻辑是一样的,这是因为google认为目前的指纹识别技术还是有不足之处,安全性还是不能和传统的方式比较的。

  (C).设备是否已经注册过指纹(如果用户未使用过这个指纹技术,那么只能提示用户到系统设置里面去设置)

(3)  指纹识别权限:

【注意】 设备大于6.0不需要运行时权限。具体的可以参考洪阳大神这篇博客:  http://blog.csdn.net/lmj623565791/article/details/50709663    

(4) 指纹识别API调用有两种方式:

 (法1)这种使用的是v4的兼容包,推荐使用这种, 方便向下兼容。

       FingerprintManagerCompat managerCompat = FingerprintManagerCompat.from(this);

(法2)这种是使用系统服务,但是必须要在sdk为23以上版本才行

FingerprintManager fingerprintManager = (FingerprintManager)getSystemService (Context.FINGERPRINT_SERVICE);

(5) 开启认证:

真正到了使用指纹识别功能的时候,你会发现其实很简单,只是调用FingerprintManager类的的方法authenticate()而已,然后系统会有相应的回调反馈给我们,该方法如下:

public void  authenticate(CryptoObject  crypto, CancellationSignal cancel,intf lags,                  AuthenticationCallback callback, Handler handler)

【参数解释】

(A)第一个参数是一个加密对象。还记得之前我们大费周章地创建和初始化的Cipher对象吗?这里的 CryptoObject 对象就是使用 Cipher 对象创建创建出来的:new FingerprintManager.CryptoObject(cipher)。

【代码参考链接】 http://blog.csdn.net/createchance/article/details/51991764

(B)第二个参数是一个CancellationSignal对象,该对象提供了取消操作的能力。创建该对象也很简单,使用new CancellationSignal()就可以了。

(C)第三个参数是一个标志,默认为0。

(D)第四个参数是AuthenticationCallback对象,它本身是FingerprintManager类里面的一个抽象类。该类提供了指纹识别的几个回调方法,包括指纹识别成功、失败等。需要我们重写。

(E)最后一个Handler,可以用于处理回调事件,可以传null。

(6)方法回调:

【注】 完成指纹识别后,还要记得将 AuthenticationCallback 关闭掉

相关文章

网友评论

    本文标题:指纹识别

    本文链接:https://www.haomeiwen.com/subject/whouaxtx.html