扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
指纹登录可以实现应用的快捷登录,在Android6.0谷歌才提供统一指纹SDK接口,在6.0之前都是各个厂商自定义。
站在用户的角度思考问题,与客户深入沟通,找到清流网站设计与清流网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广、域名注册、网络空间、企业邮箱。业务覆盖清流地区。
下面介绍如何在我们的应用中加入指纹登录的功能,之前实现指纹解锁都是用的FingerprintManager类,FingerprintManager在最新的Android 9.0系统上已经被废弃了,当Google在v4包中把FingerprintManager改为了FingerprintManagerCompat,而Compat是兼容的意思,所以Google在v4包中做了一些兼容性处理,官方推荐使用后者。所以本demo用的就是FingerprintManagerCompat工具类。
一、申请权限
二、验证手机是否支持指纹,如果手机不支持,那就没办法了。
FingerprintManagerCompat提供了三个方法:
三、开启指纹登录,一般来说都是弹出个提示框用于显示指纹识别的状态。
首先,生成一个对称加密的key
然后,通过生成的key初始化生成一个Cipher对象
最后,通过上面生成的Cipher去开启指纹验证
下面详细说一下,刚才开启指纹验证的时候的步骤:
1、创建一个FingerprintManagerCompat对象,上面有说到谷歌已经不推荐使用FingerprintManager类。
2、拿到FingerprintManagerCompat对象后就可以调authenticate方法进行指纹识别了,这里面需要传递几个参数:
(1)CryptoObject 这是一个加密类的对象,指纹扫描器会使用这个对象来判断认证结果的合法性。这个对象可以是null,但是这样的话,就意味这app无条件信任认证的结果,虽然从理论上这个过程可能被攻击,数据可以被篡改,这是app在这种情况下必须承担的风险。因此,建议这个参数不要置为null。这里就需要使用之前初始化的Cipher去创建一个CryptoObject 对象。
(2)flags 标识位,这个标志位应该是保留将来使用的,在这里我们传0就可以了。
(3)cancel这个是CancellationSignal类的一个对象,这个对象用来在指纹识别器扫描用户指纹的是时候取消当前的扫描操作,如果不取消的话,那么指纹扫描器会移植扫描直到超时(一般为30s,取决于具体的厂商实现),这样的话就会比较耗电。建议这个参数不要置为null。识别过程中可以手动取消指纹识别。
(4)callback这个参数很重要,看名字就知道这是个回调的接口,这个参数等最后我们详细来介绍。这个参数不能为null。
(5)handler这是Handler类的对象,FingerprintManagerCompat将会使用这个handler中的looper来处理来自指纹识别硬件的消息。一般来说,我们开发的时候可以直接传null,因为FingerprintManagerCompat会默认使用app的main looper来处理。
3、最后我们来说一下刚才的callback这个参数
四、总结
以上就是一个开发指纹识别的基本过程,希望对大家有所帮助。。。
1. 6.0+
2.手机里至少要有一个已经录入的指纹
需要指纹权限:uses-permissionandroid:name="android.permission.USE_FINGERPRINT"/
人脸识别可以引入虹软的sdk
主要介绍一下FingerprintManager类,提供类三个方法
第一个方法:启动指纹识别
第二个方法:判断手机里面是否有已经有录入的指纹(至少得有一个)
第三个方法:判断手机是否有指纹感应区(硬件支持)
这里需要注意一下,FingerprintManager对象的isHardwareDetected()方法和hasEnrolledFingerprints()方法需要API级别为23及以上,如果你的API级别小于23,那就得加上@TargetApi(23)
1.FingerPrintManager.AuthenticationCallback:
在验证时传入该接口,通过该接口来返回验证指纹的结果
2.FingerPrintManager.AuthenticationResult:
当指纹验证正确时,接口里返回的参数
3.FingerPrintManager.CryptoObject:
由FingerPrintManager支持的封装加密对象的类
我们将指纹识别的CallBack绑定到FingerprintManager中,以获得指纹识别的结果。这就得引入上面图片中FingerprintManager的第一个方法:
public void authenticate(FingerprintManager.CryptoObject crypto,CancellationSignal cancel,int flags,FingerprintManager.AuthenticationCallback callback,Handler handler)
可以看到,这个方法中传递了一个AuthenticationCallback,用于获取指纹识别结果 ,传递了一个CancellationSignal。至此,指纹识别已经开启了。
取消指纹识别很简单,authenticate方法中的第二个参数是一个CancellationSignal对象,这个对象就是用来维护取消操作的,这些操作包括取消监听和设定取消回调等。所以,如果要取消,这个参数就不能传Null。
取消指纹识别 mCancellationSignal.cancel();
取消之后会执行的方法是onAuthenticationError()
1.使用密码登录成功后,去判断设备是否支持指纹/人脸登录,如果支持可以让用户自行选择后续是否需要指纹/人脸登录
2.判断用户指纹/人脸验证是否成功
3.生成加密字符串 可以用sp存储
4.指纹/人脸登录时验证上次加密的字符串
相应的流程图
现在除了苹果手机有手机指纹识别功能之外,很多的安卓智能手机也有了手机指纹识别功能了,下面给大家说说安卓指纹解锁怎么设置?
01
首先在我们的手机界面找到“设置”的图标,点击进入。
02
进入设置界面后下来菜单找到“指纹和安全”的栏目点击进入。
03
进入指纹和安全后我们看到有“指纹识别”的选项,继续点击进入。
04
进入后会有密码验证或者指纹验证,我们验证后进入,然后点击底部的“添加指纹”按钮。
05
这时候我们讲手指放入到指纹按钮处进行录入指纹。
06
录入完之后,我们会在指纹识别的界面看到我们刚才录入的指纹,这就是安卓指纹解锁设置啦。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流