重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章给大家分享的是有关怎么在Android中实现指纹识别功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
临清网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。成都创新互联公司于2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司。
首先创建一个安卓项目,指纹识别作为最近几年才兴起的技术,对安卓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,"指纹正确"); } } }
Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。
以上就是怎么在Android中实现指纹识别功能,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。