您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關怎么在Android中實現指紋識別功能,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
首先創建一個安卓項目,指紋識別作為最近幾年才興起的技術,對安卓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中實現指紋識別功能,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。