指紋登錄可以實現(xiàn)應用的快捷登錄,在Android6.0谷歌才提供統(tǒng)一指紋SDK接口,在6.0之前都是各個廠商自定義。
站在用戶的角度思考問題,與客戶深入溝通,找到清流網(wǎng)站設計與清流網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設計、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)絡空間、企業(yè)郵箱。業(yè)務覆蓋清流地區(qū)。
下面介紹如何在我們的應用中加入指紋登錄的功能,之前實現(xiàn)指紋解鎖都是用的FingerprintManager類,F(xiàn)ingerprintManager在最新的Android 9.0系統(tǒng)上已經(jīng)被廢棄了,當Google在v4包中把FingerprintManager改為了FingerprintManagerCompat,而Compat是兼容的意思,所以Google在v4包中做了一些兼容性處理,官方推薦使用后者。所以本demo用的就是FingerprintManagerCompat工具類。
一、申請權限
二、驗證手機是否支持指紋,如果手機不支持,那就沒辦法了。
FingerprintManagerCompat提供了三個方法:
三、開啟指紋登錄,一般來說都是彈出個提示框用于顯示指紋識別的狀態(tài)。
首先,生成一個對稱加密的key
然后,通過生成的key初始化生成一個Cipher對象
最后,通過上面生成的Cipher去開啟指紋驗證
下面詳細說一下,剛才開啟指紋驗證的時候的步驟:
1、創(chuàng)建一個FingerprintManagerCompat對象,上面有說到谷歌已經(jīng)不推薦使用FingerprintManager類。
2、拿到FingerprintManagerCompat對象后就可以調(diào)authenticate方法進行指紋識別了,這里面需要傳遞幾個參數(shù):
(1)CryptoObject 這是一個加密類的對象,指紋掃描器會使用這個對象來判斷認證結果的合法性。這個對象可以是null,但是這樣的話,就意味這app無條件信任認證的結果,雖然從理論上這個過程可能被攻擊,數(shù)據(jù)可以被篡改,這是app在這種情況下必須承擔的風險。因此,建議這個參數(shù)不要置為null。這里就需要使用之前初始化的Cipher去創(chuàng)建一個CryptoObject 對象。
(2)flags 標識位,這個標志位應該是保留將來使用的,在這里我們傳0就可以了。
(3)cancel這個是CancellationSignal類的一個對象,這個對象用來在指紋識別器掃描用戶指紋的是時候取消當前的掃描操作,如果不取消的話,那么指紋掃描器會移植掃描直到超時(一般為30s,取決于具體的廠商實現(xiàn)),這樣的話就會比較耗電。建議這個參數(shù)不要置為null。識別過程中可以手動取消指紋識別。
(4)callback這個參數(shù)很重要,看名字就知道這是個回調(diào)的接口,這個參數(shù)等最后我們詳細來介紹。這個參數(shù)不能為null。
(5)handler這是Handler類的對象,F(xiàn)ingerprintManagerCompat將會使用這個handler中的looper來處理來自指紋識別硬件的消息。一般來說,我們開發(fā)的時候可以直接傳null,因為FingerprintManagerCompat會默認使用app的main looper來處理。
3、最后我們來說一下剛才的callback這個參數(shù)
四、總結
以上就是一個開發(fā)指紋識別的基本過程,希望對大家有所幫助。。。
1. 6.0+
2.手機里至少要有一個已經(jīng)錄入的指紋
需要指紋權限:uses-permissionandroid:name="android.permission.USE_FINGERPRINT"/
人臉識別可以引入虹軟的sdk
主要介紹一下FingerprintManager類,提供類三個方法
第一個方法:啟動指紋識別
第二個方法:判斷手機里面是否有已經(jīng)有錄入的指紋(至少得有一個)
第三個方法:判斷手機是否有指紋感應區(qū)(硬件支持)
這里需要注意一下,F(xiàn)ingerprintManager對象的isHardwareDetected()方法和hasEnrolledFingerprints()方法需要API級別為23及以上,如果你的API級別小于23,那就得加上@TargetApi(23)
1.FingerPrintManager.AuthenticationCallback:
在驗證時傳入該接口,通過該接口來返回驗證指紋的結果
2.FingerPrintManager.AuthenticationResult:
當指紋驗證正確時,接口里返回的參數(shù)
3.FingerPrintManager.CryptoObject:
由FingerPrintManager支持的封裝加密對象的類
我們將指紋識別的CallBack綁定到FingerprintManager中,以獲得指紋識別的結果。這就得引入上面圖片中FingerprintManager的第一個方法:
public void authenticate(FingerprintManager.CryptoObject crypto,CancellationSignal cancel,int flags,FingerprintManager.AuthenticationCallback callback,Handler handler)
可以看到,這個方法中傳遞了一個AuthenticationCallback,用于獲取指紋識別結果 ,傳遞了一個CancellationSignal。至此,指紋識別已經(jīng)開啟了。
取消指紋識別很簡單,authenticate方法中的第二個參數(shù)是一個CancellationSignal對象,這個對象就是用來維護取消操作的,這些操作包括取消監(jiān)聽和設定取消回調(diào)等。所以,如果要取消,這個參數(shù)就不能傳Null。
取消指紋識別 mCancellationSignal.cancel();
取消之后會執(zhí)行的方法是onAuthenticationError()
1.使用密碼登錄成功后,去判斷設備是否支持指紋/人臉登錄,如果支持可以讓用戶自行選擇后續(xù)是否需要指紋/人臉登錄
2.判斷用戶指紋/人臉驗證是否成功
3.生成加密字符串 可以用sp存儲
4.指紋/人臉登錄時驗證上次加密的字符串
相應的流程圖
現(xiàn)在除了蘋果手機有手機指紋識別功能之外,很多的安卓智能手機也有了手機指紋識別功能了,下面給大家說說安卓指紋解鎖怎么設置?
01
首先在我們的手機界面找到“設置”的圖標,點擊進入。
02
進入設置界面后下來菜單找到“指紋和安全”的欄目點擊進入。
03
進入指紋和安全后我們看到有“指紋識別”的選項,繼續(xù)點擊進入。
04
進入后會有密碼驗證或者指紋驗證,我們驗證后進入,然后點擊底部的“添加指紋”按鈕。
05
這時候我們講手指放入到指紋按鈕處進行錄入指紋。
06
錄入完之后,我們會在指紋識別的界面看到我們剛才錄入的指紋,這就是安卓指紋解鎖設置啦。