? ? 相信大部分人都用過(guò)指紋識(shí)別,日常生活中很多場(chǎng)景用到指紋識(shí)別技術(shù),比如手機(jī)解鎖,指紋支付,指紋打卡,就連公司附近的健身房也用了指紋加人臉識(shí)別的閘機(jī)。
? ? 安卓系統(tǒng)從6.0版本(代號(hào)Marshmallow,發(fā)布時(shí)間2015年,)開(kāi)始支持指紋識(shí)別技術(shù)。這篇文章將對(duì)安卓指紋識(shí)別功能及架構(gòu)做一個(gè)簡(jiǎn)介。而更核心的指紋識(shí)別原理及算法將在后續(xù)文章中探討。?
? ? 首先我們來(lái)看指紋識(shí)別的功能,指紋識(shí)別技術(shù)主要包括下面幾個(gè)子功能:
- 指紋錄入(Enroll);
- 指紋認(rèn)證(Authenticate);
- 指紋管理(重命名Rename, 刪除Remove, 查詢getEnrolledFingerprints);
? ? 關(guān)于錄入和管理不多做介紹,這里說(shuō)一說(shuō)指紋識(shí)別。關(guān)于指紋認(rèn)證大家可能有一個(gè)小的誤區(qū),大家思考一個(gè)問(wèn)題,我們手機(jī)的指紋識(shí)別功能是一直處于就緒狀態(tài)等待我們輸入指紋嗎?答案是否定的。當(dāng)我們鎖屏后,指紋解鎖功能才開(kāi)始工作,當(dāng)我們打開(kāi)指紋付款頁(yè)面指紋支付才開(kāi)始工作,在安卓系統(tǒng)中是調(diào)用authenticate方法使指紋硬件上電,這時(shí)才能進(jìn)行指紋采集,指紋采集成功后下電,當(dāng)失敗一定次數(shù)后也會(huì)下電。?這樣的好處很明顯,那就是省電。
? ? 介紹了指紋識(shí)別的功能,下面來(lái)看看安卓的指紋識(shí)別架構(gòu)。以安卓7.0系統(tǒng)為例,下面是一張簡(jiǎn)略圖:

? ? 在應(yīng)用層主要有設(shè)置(Settings)和鎖屏(Keyguard, 包含在SystemUI內(nèi))兩部分。在Framework層 FingerprintManager 為應(yīng)用層提供API接口,以及處理底層的回調(diào),F(xiàn)ingerprintService調(diào)用native層為FingerprintManager提供功能實(shí)現(xiàn)。?至于native層,本次不做介紹,下篇文章將結(jié)合指紋識(shí)別的原理來(lái)探討。
? ? 下面是更詳細(xì)一些的類圖:
