Android 设备指纹

  • 使用FingerprintManagerCompat
  • 使用FingerprintManager

FingerprintManagerCompat

官方推荐该方法:

1.获取管理类
FingerprintManagerCompat mManager =FingerprintManagerCompat.from(this);

//确认指纹是否存在,是否有这个功能
boolean isHard=mManager.isHardwareDetected();

//检查是否至少有一个指纹注册
boolean hasFringer=mManager.hasEnrolledFingerprints();
//有至少一个指纹注册
if(hasFringer == true){
Toast.makeText(getApplicationContext(), “请按下手指,进行指纹校验”, Toast.LENGTH_SHORT).show();

2.注册回调
/**
* 开始验证,什么时候停止由系统来确定,如果验证成功,那么系统会关系sensor,如果失败,则允许
* 多次尝试,如果依旧失败,则会拒绝一段时间,然后关闭sensor,过一段时候之后再重新允许尝试
*
* 第四个参数为重点,需要传入一个FingerprintManagerCompat.AuthenticationCallback的子类
* 并重写一些方法,不同的情况回调不同的函数
*/
mManager.authenticate(null, 0, null, new MyCallBack(), null);
} else {
//有指纹功能,没有设置指纹
。。。。
}

3.回调类
public class MyCallBack extends FingerprintManagerCompat.AuthenticationCallback {
private static final String TAG = “MyCallBack”;

    // 当出现错误的时候回调此函数,比如多次尝试都失败了的时候,errString是错误信息@Overridepublic void onAuthenticationError(int errMsgId, CharSequence errString) {Log.e(TAG, "onAuthenticationError: " + errString);Log.i("dxj", "errMsgId=" + errMsgId);//5 用户没有在设备上面录入指纹if (errMsgId == 5) {Toast.makeText(getApplicationContext(), "onAuthenticationError: " + errString + "请录入指纹", Toast.LENGTH_LONG).show();}}// 当指纹验证失败的时候会回调此函数,失败之后允许多次尝试,失败次数过多会停止响应一段时间然后再停止sensor的工作@Overridepublic void onAuthenticationFailed() {Log.e(TAG, "onAuthenticationFailed: " + "验证失败");Toast.makeText(getApplicationContext(), "onAuthenticationFailed: " + "验证失败", Toast.LENGTH_LONG).show();}@Overridepublic void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {Log.e(TAG, "onAuthenticationHelp: " + helpString);Toast.makeText(getApplicationContext(), "onAuthenticationHelp: " + helpString, Toast.LENGTH_LONG).show();}// 当验证的指纹成功时会回调此函数,然后不再监听指纹sensor@Overridepublic void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResultresult) {Log.e(TAG, "onAuthenticationSucceeded: " + "验证成功");Toast.makeText(getApplicationContext(), "onAuthenticationSucceeded: " + "验证成功", Toast.LENGTH_LONG).show();}
}

FingerprintManager

版本判断:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { …. }

1.获取管理类
FingerprintManager mFingerprintManager = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE);

if (!(mFingerprintManager == null)) {

hasFingerprintManagerFinger = mFingerprintManager.isHardwareDetected();harDwareFingerprintManagerDetected = mFingerprintManager.hasEnrolledFingerprints();}

2.回调校验
mFingerprintManager.authenticate(null, null, 0, new MyCallBackB(), null);

3.回调类
public class MyCallBackB extends FingerprintManager.AuthenticationCallback {

    // 当出现错误的时候回调此函数,比如多次尝试都失败了的时候,errString是错误信息@Overridepublic void onAuthenticationError(int errMsgId, CharSequence errString) {LogUtils.e("  MyCallBackB onAuthenticationError= " + errMsgId);//7 用户没有在设备上面录入指纹switch (errMsgId) {case 1:Toast.makeText(getApplicationContext(), "onAuthenticationError: " + errString + "请录入指纹", Toast.LENGTH_LONG).show();break;case 7:Toast.makeText(getApplicationContext(), "onAuthenticationError: " + errString + "请录入指纹", Toast.LENGTH_LONG).show();break;}}// 当指纹验证失败的时候会回调此函数,失败之后允许多次尝试,失败次数过多会停止响应一段时间然后再停止sensor的工作@Overridepublic void onAuthenticationFailed() {}@Overridepublic void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {Toast.makeText(getApplicationContext(), "onAuthenticationHelp: " + helpString, Toast.LENGTH_LONG).show();}// 当验证的指纹成功时会回调此函数,然后不再监听指纹sensor@Overridepublic void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {}}

注意:

最好进行类的判断:为什么呢?正常指纹5.1即支持,然而,我们国产某些手机5.1.1任然木有这个类,所以导致直接类找不到异常,奔溃了。露珠已经遇到锤子某机型的坑,app无法打开。。。
try {

       Class.forName("android.hardware.fingerprint.FingerprintManager");mFingerprintManager = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE);} catch (ClassNotFoundException e) {e.printStackTrace();}

提示:

检查一个手机是否支持指纹设备,先进行设备版本判断,如果大于21,即开始进行下方代码,检测指纹。最好这两个类合用,前者是google推荐,据说是做了很多兼容的,然而,我们的国产手机太NB,支持指纹用第一个类依然无法检测,第二类就能检测出来。当然,更加建议在用的时候用上方注意里面的方式,先查看是否有这个类。

Android 设备指纹相关推荐

  1. 反欺诈体系与设备指纹

    文章目录 动态防控理念 生物探针 智能验证码 生物探针和智能验证码的区别: 风险态势感知系统 风控核心组件设备指纹 设备指纹的原理 Android 设备指纹 iOS 设备指纹 Web 设备指纹 设备I ...

  2. android 获取设备指纹,Android唯一识别号(设备指纹)的生成

    原理: (尽可能实现,同一设备在不刷机不恢复出厂的情况下,每次生成的设备指纹不变:并且尽可能保证两部不同的设备生成的设备指纹不能一样) 1.将imei号+手机硬件信息+androidID拼接成一个字符 ...

  3. android 获取设备指纹,Android唯一识别号(设备指纹)的生成及原理

    /** * 获取设备指纹的工具类 * *@author BarryHuang *@DATE 2015-8-19 */ public class FingerprintUtil { private st ...

  4. 当谈论设备指纹时,我们到底在说什么?(转)

    原标题:当谈论设备指纹时,我们到底在说什么? http://finance.ifeng.com/a/20170829/15621402_0.shtml 中新网8月29日电  "设备" ...

  5. Android 设备正在“绞杀”密码!

    当应用程序或浏览器不再使用用户名和密码的登录方式时,盗号.撞库的数据泄露现状是否会有所好转? 日前,于巴萨罗那召开的世界移动通信大会(Mobile World Congress,简称 MWC)上,Go ...

  6. 必过SafetyNet!以MIUI开发版系统为例详解Android设备通过SafetyNet校验方法

    必过SafetyNet!以MIUI开发版系统为例详解Android设备通过SafetyNet校验方法 作者 梓沐啊_(KylinDemons) 版权声明 Copyright © 2021 KylinD ...

  7. 基于设备指纹零感验证系统

    作者: 我是小三 博客: http://www.cnblogs.com/2014asm/ 由于时间和水平有限,本文会存在诸多不足,希望得到您的及时反馈与指正,多谢! 工具环境: android 4.4 ...

  8. 适用于Android设备的十大应用程序锁

    现如今的智能手机非常个人化,其中的应用程序确实会携带不同形式的个人数据,例如图片,消息,银行应用程序等. 应用锁也称为隐私锁,它是所有移动用户最关注的隐私问题之一.可以保护应用程序免受陌生人或在智能手 ...

  9. 谷歌账户无法添加_如何将另一个Google帐户添加到您的Android设备

    谷歌账户无法添加 In order to set up an Android device, you have to sign in with a Google account. But you ca ...

最新文章

  1. 推荐13个CSS3快速开发工具
  2. net-snmp交叉编译出现 undefined reference to dlopen,dlsym,dlclose错误
  3. idea启动多个tomcat失败
  4. 囧囧西游之大闹天宫java_《囧囧西游之大闹天宫》攻略(1)
  5. mysql不能改编码_(转)MySQL设置和修改编码问题
  6. redis——内存概述
  7. Windows Server 2016-管理Active Directory复制任务
  8. Cent OS 7配置Dnsmasq
  9. Hdu2680 最短路
  10. JSP中乱码问题,你真的理解了么?
  11. 《linux核心应用命令速查》连载九:crontab:设置计时器
  12. 推荐10个高效好用的办公软件,极大提升效率
  13. python爬取58同城二手房信息
  14. Python CSV模块
  15. Heat Map在生物信息学中的应用
  16. java在线校验银行卡号_校验银行卡卡号
  17. 小打卡软件测试,考勤打卡软件大测评,这款打卡软件你有在用吗?
  18. ceres solver 使用
  19. 《Web前端开发高级工程师就业班》目前 最新
  20. 用Python玩转二维码

热门文章

  1. 什么牌子的蓝牙耳机好用?音质最好的耳机排行
  2. 正弦内插值算法c语言,正弦内插算法.c
  3. CTFshow SSRF
  4. ndi协议_NDI是什么协议,NDI传输协议技术原理方法
  5. linux 查看内存排行并进行计算
  6. 计算机网络虚拟局域网步骤,如何构建虚拟局域网 多维网使用教程
  7. 2020蓝桥杯跑步锻炼
  8. Putty串口使用技巧
  9. socket.io介绍
  10. Cadence Allegr 如何放置钻孔表