Android指紋識別功能
指紋識別作為最新興起的用戶身份驗(yàn)證機(jī)制,已經(jīng)被越來越多的應(yīng)用程序所采用,相比傳統(tǒng)的密碼九宮格等驗(yàn)證方法,指紋識別更加安全,如今越來越多的安卓手機(jī)配備了指紋識別模塊,我們就來嘗試一下這一項(xiàng)新興的技術(shù)
首先創(chuàng)建一個安卓項(xiàng)目,指紋識別作為最近幾年才興起的技術(shù),對安卓api level要求較高(api 23以上即jdk6.0以上)
創(chuàng)建一個button用于觸發(fā)指紋識別,并在MainActivity里對其監(jiān)聽,代碼如下
Button button=(Button)findViewById(R.id.checkFingerPrint);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("btn","開始識別");
checkFingerPrint();
}
});
在checkFingerPrint方法里調(diào)用系統(tǒng)提供的指紋識別函數(shù)FingerprintManagerCompat的authenticate,代碼如下
private void checkFingerPrint(){
FingerprintManagerCompat.from(this).authenticate(null,0,null,new MyCallBack(),null);
}
在這里解釋一下這個方法里各個參數(shù)的含義
第一個參數(shù)是用于通過指紋驗(yàn)證取出AndroidKeyStore中的key的對象
第二個參數(shù)可以用來取消指紋驗(yàn)證,如果想手動關(guān)閉驗(yàn)證,可以調(diào)用該參數(shù)的cancel方法
第三個參數(shù)沒什么意義,就是傳0就好了
第四個參數(shù)最重要,由于指紋信息是存在系統(tǒng)硬件中的,app是不可以訪問指紋信息的,所以每次驗(yàn)證的時候,系統(tǒng)會通過這個callback告訴你是否驗(yàn)證通過、驗(yàn)證失敗等
第五個參數(shù)是handler,fingerprint中的消息都通過這個handler來傳遞消息,如果你傳空,則默認(rèn)創(chuàng)建一個在主線程上的handler來傳遞消息,沒什么用,0傳null好了
通過這個函數(shù)api我們能夠看出來第四個參數(shù)最重要,他是決定指紋成功和失敗以及驗(yàn)證失敗后的后續(xù)操作,接下來我們就通過繼承重寫這個函數(shù)(注意參數(shù)一定要跟父類一致,博主就是沒寫對一開始函數(shù)不執(zhí)行),代碼如下
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,"指紋正確");
}
}
這里我們給指紋識別正確和錯誤添加了打印在控制臺的后續(xù)動作,當(dāng)然繼承的這個類還有其他的方法onAuthenticationError和onAuthenticationHelp,這兩個方法是處理識別不成功的。這里要區(qū)分一下識別不成功和識別錯誤的區(qū)別,前者是指沒有識別到指紋而后者是識別到了指紋但不匹配
接下來我們用模擬器做測試,出于安全的考慮谷歌暫時沒有開放指紋存儲的功能,因此該功能使用的是系統(tǒng)里的指紋,也就是我們傳統(tǒng)的用于解鎖屏幕時設(shè)置的指紋,為了測試我們?nèi)ツM器里設(shè)置一個指紋

接下來進(jìn)到程序里面去測試我們的指紋識別,首先是用已經(jīng)錄入的指紋,通過控制臺可以看到已經(jīng)執(zhí)行了識別成功的方法

然后我們換錯誤的指紋,再試一次,可以看到錯誤指紋的方法也已經(jīng)被調(diào)用了

接下來貼出全部的代碼供大家參考
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,"指紋正確");
}
}
}
這個程序只實(shí)現(xiàn)了簡單的指紋識別,當(dāng)然作為一個涉及到安全性的功能,谷歌提供的東西遠(yuǎn)不止這些,比如多次識別錯誤的保護(hù)等等。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
舉例講解Android應(yīng)用開發(fā)中OTTO框架的基本使用
這篇文章主要介紹了Android應(yīng)用開發(fā)中OTTO框架的基本使用講解,文中舉了創(chuàng)建一個單例模式的應(yīng)用例子,需要的朋友可以參考下2016-02-02
深入淺析Android手機(jī)衛(wèi)士保存密碼時進(jìn)行md5加密
一般的手機(jī)沒有root權(quán)限,進(jìn)不去data/data目錄,當(dāng)手機(jī)刷機(jī)了后,擁有root權(quán)限,就可以進(jìn)入data/data目錄,查看我們保存的密碼文件,因此我們需要對存入的密碼進(jìn)行MD5加密,接下來通過本文給大家介紹Android手機(jī)衛(wèi)士保存密碼時進(jìn)行md5加密,需要的朋友一起學(xué)習(xí)吧2016-04-04
Android控件實(shí)現(xiàn)直播App點(diǎn)贊飄心動畫
這篇文章主要為大家詳細(xì)介紹了FlowLikeView控件實(shí)現(xiàn)直播App特效之點(diǎn)贊飄心動畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
Android 截取手機(jī)屏幕兩種實(shí)現(xiàn)方法
這篇文章主要介紹了Android 截取手機(jī)屏幕兩種實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2017-05-05
利用OPENCV為android開發(fā)畸變校正的JNI庫方法
今天小編就為大家分享一篇利用OPENCV為android開發(fā)畸變校正的JNI庫方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
Android如何通過手機(jī)自動獲取短信驗(yàn)證碼
注冊帳號時,經(jīng)常需要手機(jī)獲取驗(yàn)證碼,Android如何通過手機(jī)自動獲取短信驗(yàn)證碼,下面看看小編給大家分享的一段代碼,感興趣的小伙伴們可以參考一下2016-03-03
Android中通過訪問本地相冊或者相機(jī)設(shè)置用戶頭像實(shí)例
本篇文章主要介紹了Android中通過訪問本地相冊或者相機(jī)設(shè)置用戶頭像,具有一定的參考價值,有興趣的可以了解一下。2017-01-01
利用adt-bundle輕松搭建Android開發(fā)環(huán)境與Hello world(Windows)
這篇文章主要介紹了利用adt-bundle在Windows下輕松搭建Android開發(fā)環(huán)境與Hello world,感興趣的小伙伴們可以參考一下2016-07-07

