安卓指纹识别demo

指纹识别作为最新兴起的用户身份验证机制,已经被越来越多的应用程序所采用,相比传统的密码九宫格等验证方法,指纹识别更加安全,如今越来越多的安卓手机配备了指纹识别模块,我们就来尝试一下这一项新兴的技术

  • 首先创建一个安卓项目,指纹识别作为最近几年才兴起的技术,对安卓api level要求较高(api 23以上即jdk6.0以上)

  • 创建一个button用于触发指纹识别,并在MainActivity里对其监听,代码如下

Button button=(Button)findViewById(R.id.checkFingerPrint);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Log.d("btn","开始识别");checkFingerPrint();}});
  • 在checkFingerPrint方法里调用系统提供的指纹识别函数FingerprintManagerCompat的authenticate,代码如下
private void checkFingerPrint(){FingerprintManagerCompat.from(this).authenticate(null,0,null,new MyCallBack(),null);}
  • 在这里解释一下这个方法里各个参数的含义

    第一个参数是用于通过指纹验证取出AndroidKeyStore中的key的对象

    第二个参数可以用来取消指纹验证,如果想手动关闭验证,可以调用该参数的cancel方法

    第三个参数没什么意义,就是传0就好了

    第四个参数最重要,由于指纹信息是存在系统硬件中的,app是不可以访问指纹信息的,所以每次验证的时候,系统会通过这个callback告诉你是否验证通过、验证失败等

    第五个参数是handler,fingerprint中的消息都通过这个handler来传递消息,如果你传空,则默认创建一个在主线程上的handler来传递消息,没什么用,0传null好了

  • 通过这个函数api我们能够看出来第四个参数最重要,他是决定指纹成功和失败以及验证失败后的后续操作,接下来我们就通过继承重写这个函数(注意参数一定要跟父类一致,博主就是没写对一开始函数不执行),代码如下
public class MyCallBack extends FingerprintManagerCompat.AuthenticationCallback{private static final String TAG = "MyCallBack";@Overridepublic void onAuthenticationFailed(){Log.d(TAG,"指纹错误");}public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result){Log.d(TAG,"指纹正确");}}
  • 这里我们给指纹识别正确和错误添加了打印在控制台的后续动作,当然继承的这个类还有其他的方法onAuthenticationError和onAuthenticationHelp,这两个方法是处理识别不成功的。这里要区分一下识别不成功和识别错误的区别,前者是指没有识别到指纹而后者是识别到了指纹但不匹配

  • 接下来我们用模拟器做测试,出于安全的考虑谷歌暂时没有开放指纹存储的功能,因此该功能使用的是系统里的指纹,也就是我们传统的用于解锁屏幕时设置的指纹,为了测试我们去模拟器里设置一个指纹

  • 接下来进到程序里面去测试我们的指纹识别,首先是用已经录入的指纹,通过控制台可以看到已经执行了识别成功的方法

  • 然后我们换错误的指纹,再试一次,可以看到错误指纹的方法也已经被调用了

  • 接下来贴出全部的代码供大家参考
package com.example.john.fingerprinttest;import android.support.v4.hardware.fingerprint.FingerprintManagerCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button=(Button)findViewById(R.id.checkFingerPrint);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Log.d("btn","开始识别");checkFingerPrint();}});}private void checkFingerPrint(){FingerprintManagerCompat.from(this).authenticate(null,0,null,new MyCallBack(),null);}public class MyCallBack extends FingerprintManagerCompat.AuthenticationCallback{private static final String TAG = "MyCallBack";@Overridepublic void onAuthenticationFailed(){Log.d(TAG,"指纹错误");}public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result){Log.d(TAG,"指纹正确");}}
}
  • 这个程序只实现了简单的指纹识别,当然作为一个涉及到安全性的功能,谷歌提供的东西远不止这些,比如多次识别错误的保护等等,我会在后续的博客里继续跟大家分享我的学习体会,也欢迎大家在博客下方评论区与我讨论

安卓指纹识别demo相关推荐

  1. Android 实现指纹识别demo

    demo链接:https://download.csdn.net/download/meixi_android/10796468 1.指纹工具类: /*** 作者:created by meixi* ...

  2. Android 指纹识别(Touch ID)实例

    指纹识别   指纹识别的支持是Android6.0以后才开始的,Google也为指纹识别提供了一些列接口,指纹识别将要用到的核心API为FingerprintManager,其中还有三个核心内部类:F ...

  3. 微信小程序 SOTER 生物认证DEMO,指纹识别

    今天项目尝试使用微信小程序指纹认证功能 以下为测试demo index.js Page({/*** 页面的初始数据*/data: {isfingerPrint : false, //可否使用指纹识别 ...

  4. Android 6.0指纹识别App开发demo

    在Android 6.0中google终于给android系统加上了指纹识别的支持,这个功能在iPhone上早就已经实现了,并且在很多厂商的定制的ROM中也都自己内部实现这个功能了,这个功能来的有点晚 ...

  5. Android安卓麻将识别源码Demo( 三)

    Android安卓麻将识别源码Demo( 三) 未经过允许不得转载,转载请联系我,如何联系,点我头像. 连载已经完结, 百度网盘测试APP下载地址:  链接:https://pan.baidu.com ...

  6. 安卓系统的指纹解锁_安卓全面屏都用的屏幕下指纹识别,科普超声波指纹识别的原理...

    指纹识别可以说是苹果一手带热的,虽然苹果将指纹识别普及推广,但是随着iPhoneX的发布指纹识别和home一样消失了.不过目前大部分的安卓手机,都是采用了屏幕下指纹识别.在全面屏上,安卓走得比苹果iP ...

  7. 安卓系统的指纹解锁_浅谈手机指纹识别的发展:从鸡肋到必备

    若是要评选我们日常生活中最常用的电子设备的话,笔者相信手机肯定会高票当选,可以说手机在不知不觉的过程中改变着我们的生活,给我们的生活带来了越来越多的便利. 回顾手机的发展,从"鸡肋" ...

  8. android 指纹识别驱动 win10,[教程] 使用你的安卓手机指纹识别来更优雅地远程解锁Windows 10...

    目前市面上除游戏本以外大多数新出的 Windows 10笔记本电脑都支持 Windows Hello(面容.指纹.虹膜等),但是对于台式机来说,很少会有消费者专门去购置一台支持 Windows Hel ...

  9. Android3d结构光,为什么3D结构光在安卓手机中没有取代指纹识别?

    我认为,有以下3个重要原因: 一.国内用户基数太大 我们到目前为止仍然是全球最大的智能手机市场,每年在中国的手机出货量都在4.5亿部左右.从这里可以看出来,我们的用户基数太大,各种喜好.年龄段的用户都 ...

最新文章

  1. oracle 延迟段,oracle - 未启用延迟段创建功能(ORA-00439) - 堆栈内存溢出
  2. python3 异步 asyncio aiohttp aiohttp-requests aiofiles 使用
  3. 计算机基础7试题,大学计算机应用基础试题
  4. 微服务认证架构如何演进来的?
  5. python文件函数_python文件和文件夹复制函数
  6. 八皇后--python代码
  7. App Store审核标准
  8. 代码调用SPSS功能执行分析
  9. 原型工具axure7.0下载及汉化
  10. winRAR 密码暴力破解/清除压缩文件密码工具
  11. 计算机无法正常启动安全模式开启,Win7电脑开机无法正常启动只能进入安全模式怎么解决...
  12. 论文翻译:Pose-conditioned Spatio-Temporal Attention for Human Action Recognition
  13. 加息+四巫日铁矿石大跌,棕榈油认沽最高30倍,豆一09-01继续反套2022.6.15
  14. Intel opreation mode
  15. JVM成神之路-Java内存模型(JMM)
  16. Havel-Hakimi定理问题
  17. NSGA-II改进之种群初始化
  18. 在Xshell上下载vim
  19. hdu-4966 GGS-DDU 最小树形图
  20. 有没有测试游戏天赋的软件,测测你的电竞天赋有多高游戏-抖音测测你的电竞天赋有多高官网版游戏V1.0...

热门文章

  1. specify的含义、作用及vcs对应仿真选项
  2. 头歌C++ 第8章 虚函数与多态性
  3. 说说ShellExecuteEx
  4. CPA广告 CPS广告 CPC广告 CPM广告分别什么意思?
  5. 鸿蒙系统散热,安卓11,鸿蒙2.0万里长征第一步;芯片散热新技术冷却性能增加50倍​|图灵周报...
  6. 对于驱动TFTLCD,读这篇文章就够了!
  7. 鼠标驱动异常,显示:usb optical mouse(鼠标无效)
  8. 国外电汇的参数应该怎么写?(来源csdn,魔法巧克力收集)
  9. 前端小作业~小人动画案例
  10. 安卓手机系统rom移植工具下载