美文网首页
指纹识别

指纹识别

作者: fanqibaby | 来源:发表于2017-12-04 15:48 被阅读0次

解释:

指纹是在android6.0系统新增加的功能,最小api等级要求23。android原生技术,不要嵌入sdk包

6.0以前也有指纹识别的手机,不过现在android生产厂商太多了,机制不一样可能会遇到不同的问题

原理(流程):

首先验证你的密码,密码验证通过之后,开始验证指纹,这里的要验证的指纹是指你手机上录入的用于解锁屏幕的指纹(前提你已经录入了指纹,开启了密码锁屏),当你没有录入指纹的时候系统会回调,提醒你(提示性内容可以自己设置)。

使用

想要支持此功能必须该设备有指纹识别这个硬件才行。

1、适配:由于Android机碎片化太严重,不同的手机厂商给配置的也不一样,有些厂商可能会用自己的sdk

2.建议只支持6.0以上的手机,用谷歌原生技术。6.0以下不做支持,这样也省去了很多适配问题。适配比较麻烦

3.如果厂商在Google之前就支持了指纹识别,这种情况就不能使用谷歌官方提供的接口方式实现,如果想要适配这种,只能使用厂商提供的SDK来实现

适配建议

1.6.0及以上系统选择性的屏蔽一些机型(有些厂商支持的不好)

2.6.0以下支持谷歌官方提供的接口的设备选择性支持(会有很多适配问题)

3.6.0以下不支持谷歌官方提供的接口的设备根据厂商提供的SDK进行适配

三星手机的指纹识别SDK是开放的,若想适配需引入三分SDK,包并不是很大,对apk大小影响不大(有两个包)

魅族手机的指纹识别SDK


Demo

https://github.com/uccmawei/FingerprintIdentify

FingerprintIdentify

Android指纹识别API兼容库,目前整合了安卓原生API以及三星和魅族的指纹SDK,支持继续拓展。

API调用优先级:安卓原生 > 三星SDK > 魅族SDK

代码实现:主要是FingerprintManager

第一种,只支持6.0以上的指纹识别的手机,就是在调用指纹识别的时候先判断一下sdk。,第二种就是实现指纹识别的时候可以采用FingerprintManagerCompat这个类来实现,这个是v4包的可以兼容6.0以下的,但是在6.0以上不知道是不是有问题。还有最后一种解决的方式,就是在调用指纹识别的时候,可以采用反射的方式来判断手机是否支持指纹识别,或者说手机是否支持指纹识别的类

FingerprintManager manager = (FingerprintManager) this.getSystemService(Context.FINGERPRINT_SERVICE);

manager.isHardwareDetected()//判断是否支持指纹识别功能

manager.hasEnrolledFingerprints()//判断有没有录入指纹

manager.authenticate(cryptoObject, mCancellationSignal, 0, mAuthCallback, null);//启动指纹识别

private void showAuthenticationScreen() {

Intent intent = mKeyManager.createConfirmDeviceCredentialIntent("finger", "测试指纹识别");

if (intent != null) {

startActivityForResult(intent, REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS);

}

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS) {

// Challenge completed, proceed with using cipher

if (resultCode == RESULT_OK) {

Toast.makeText(this, "识别成功", Toast.LENGTH_SHORT).show();

} else {

Toast.makeText(this, "识别失败", Toast.LENGTH_SHORT).show();

}

}

相关文章

网友评论

      本文标题:指纹识别

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