Android指纹识别功能
作者:qq_28377423 时间:2023-11-04 05:09:18
指纹识别作为最新兴起的用户身份验证机制,已经被越来越多的应用程序所采用,相比传统的密码九宫格等验证方法,指纹识别更加安全,如今越来越多的安卓手机配备了指纹识别模块,我们就来尝试一下这一项新兴的技术
首先创建一个安卓项目,指纹识别作为最近几年才兴起的技术,对安卓api level要求较高(api 23以上即jdk6.0以上)
创建一个button用于触发指纹识别,并在MainActivity里对其监听,代码如下
Button button=(Button)findViewById(R.id.checkFingerPrint);
button.setOnClickListener(new View.OnClickListener() {
@Override
public 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";
@Override
public 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 {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button)findViewById(R.id.checkFingerPrint);
button.setOnClickListener(new View.OnClickListener() {
@Override
public 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";
@Override
public void onAuthenticationFailed(){
Log.d(TAG,"指纹错误");
}
public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result){
Log.d(TAG,"指纹正确");
}
}
}
这个程序只实现了简单的指纹识别,当然作为一个涉及到安全性的功能,谷歌提供的东西远不止这些,比如多次识别错误的保护等等。
来源:https://blog.csdn.net/qq_28377423/article/details/72868495
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java图形化界面编程实现简单计算器
![](https://img.aspxhome.com/file/2023/9/79289_0s.png)
Android webview与js的数据交互
![](https://img.aspxhome.com/file/2023/7/109197_0s.jpg)
详解MyBatis-Plus Wrapper条件构造器查询大全
Android setTag方法的key问题解决办法
Android编程之TextView的字符过滤功能分析
idea springboot远程debug的操作方法
![](https://img.aspxhome.com/file/2023/8/62498_0s.png)
Java自带定时任务ScheduledThreadPoolExecutor实现定时器和延时加载功能
Android 创建与解析XML(五)——详解Dom4j方式
![](https://img.aspxhome.com/file/2023/8/109218_0s.png)
java 将一个数组逆序输出的方法
解析mybatis-plus中的resultMap简单使用
![](https://img.aspxhome.com/file/2023/1/132211_0s.png)
理解Java中的内存泄露及解决方法示例
![](https://img.aspxhome.com/file/2023/7/78987_0s.png)
详述 DB2 分页查询及 Java 实现的示例
Java Lambda表达式与匿名内部类的联系和区别实例分析
C#中如何使用Chart图表问题
![](https://img.aspxhome.com/file/2023/9/104229_0s.png)
Android图片无限轮播的实现代码
使用SpringBoot跨系统调用接口的方案
IDEA中Mybatis的MGB使用逆向工程配置的详细教程
![](https://img.aspxhome.com/file/2023/3/88583_0s.png)
WPF实现3D翻牌式倒计时特效
![](https://img.aspxhome.com/file/2023/0/87050_0s.gif)
详解Java字节码编程之非常好用的javassist
![](https://img.aspxhome.com/file/2023/0/78850_0s.png)
IntelliJ IDEA maven 构建简单springmvc项目(图文教程)
![](https://img.aspxhome.com/file/2023/3/69333_0s.jpg)