android M指紋的資料太少,經(jīng)過一段時間閱讀原生android代碼,寫了以下例子,貢獻出來給需要幫助的人。
創(chuàng)新互聯(lián)公司長期為上千余家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為庫爾勒企業(yè)提供專業(yè)的成都網(wǎng)站設計、網(wǎng)站制作,庫爾勒網(wǎng)站改版等技術(shù)服務。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
以下內(nèi)容基于64位的高通CPU,搭載fpc1020芯片,此部分代碼在原生android上做了更改,以應付工廠指紋的測試。原生android指紋錄入需要采集10次(因不同的芯片而定)。
代碼簡單說明:
1.FingerPrintEnrollBase類:
重要的是
public interface Listener {
void onEnrollmentHelp(CharSequence helpString);
void onEnrollmentError(int errMsgId, CharSequence errString);
void onEnrollmentProgressChange(int steps, int remaining);
}
這個接口。
1)onEnrollmentHelp函數(shù):是下層返回的指紋操作幫助信息。
2)onEnrollmentError函數(shù)是下層返回的錯誤信息,errMsgId是錯誤信息類型,其中1表示指紋硬件不可用,3表示超時,5表示操作已取消。errString是errMsgId對應的文字信息,有需要的自己實驗就知道了。
3)onEnrollmentProgressChange()函數(shù)是顯示當前指紋的采集情況,steps:總共需要錄入多少次;remaining是剩余多少次,我在此函數(shù)中有打印Log。
附件zip包中的FingerPrintActivity是主Activity類,F(xiàn)ingerPrintEnrollBase是指紋Base類。
需要特別說明的是,在FingerPrintEnrollBase類中有一句:private byte[] mToken = new byte[69];這個數(shù)組正常情況是通過輸入密碼后經(jīng)由framework層向hal層申請的,我這里為了省去驗證那一塊的代碼,通過sizeof(hw_auth_token_t)計算出來的為69,需要的請依此計算。我在代碼里實驗過,此數(shù)組如果不是69(在64位CPU上),將直接導致程序crach!
附件圖片是fpc指紋的采集流程,僅作為參考。有需要selftest或checkboard test的請郵件我。