解析用RxJava實現(xiàn)Android指紋識別代碼
2018-02-24 11:41:02
2571瀏覽
RxJava的核心內(nèi)容很簡單,就是進行異步操作。類似于Handler和AsyncTask的功能,但是在代碼結(jié)構(gòu)上不同。RxJava使用了觀察者模式和建造者模式中的鏈?zhǔn)秸{(diào)用(類似于C#的LINQ)。
觀察者模式:Observable(被觀察者)被Observer(觀察者)訂閱(Subscribe)之后,Observable在發(fā)出消息的時候會通知對應(yīng)的Observer,并且,一個Observable可以有被多個Observer訂閱。
鏈?zhǔn)秸{(diào)用:和Builder模式類似,調(diào)用對應(yīng)的方法對原對象進行處理后返回原對象,從而做到鏈?zhǔn)秸{(diào)用。
下面我們用rxjava封裝了指紋識別,并實現(xiàn)類似Glide生命周期綁定,順便開發(fā)了一個指紋控件。
Setup
測試機型推薦android版本6.0以上且具有指紋模塊。
在項目build.gradle中配置:
repositories{
jcenter()//Ifnotalreadythere
}
在Module中build.gradle中配置:
Download
dependencies{
compile'com.zwh:RxFingerPrinter:1.1.0'
}
Usage
創(chuàng)建一個RxFingerPrinter實例:
RxFingerPrinterrxFingerPrinter=newRxFingerPrinter(this);//wherethisisanActivityinstance
在需要開啟指紋識別的地方執(zhí)行begin方法并訂閱:
//可以在oncreat方法中執(zhí)行
DisposableObserverobserver=newDisposableObserver(){
@Override
protectedvoidonStart(){
}
@Override
publicvoidonError(Throwablee){
//處理錯誤信息
if(einstanceofFPerException){
Toast.makeText(MainActivity.this,((FPerException)e).getDisplayMessage(),Toast.LENGTH_SHORT).show();
}
}
@Override
publicvoidonComplete(){
}
@Override
publicvoidonNext(BooleanaBoolean){
if(aBoolean){
//指紋驗證成功
}else{
//指紋驗證失敗
}
}
};
rxfingerPrinter.begin().subscribe(observer);//RxfingerPrinter會自動在onPause()時暫停指紋監(jiān)聽,onResume()時恢復(fù)指紋監(jiān)聽)
rxfingerPrinter.addDispose(observer);//由RxfingerPrinter管理(會在onDestroy()生命周期時自動解除訂閱),已可以不調(diào)用該方法,自己解除訂閱
用FPerException封裝了一下指紋識別時可能出現(xiàn)的異常,可以在訂閱的Subscriber的onError(Throwablee)中獲取該異常
@Override
publicvoidonError(Throwablee){
if(einstanceofFPerException){//判斷該異常是否為FPerException
Toast.makeText(MainActivity.this,((FPerException)e).getDisplayMessage(),Toast.LENGTH_SHORT).show();
}
可以根據(jù)((FPerException)e).getCode()來獲取對應(yīng)的錯誤碼,也可以直接調(diào)用((FPerException)e).getDisplayMessage()提示默認(rèn)的錯誤信息。
publicStringgetDisplayMessage(){
switch(code){
caseSYSTEM_API_ERROR:
return"系統(tǒng)API小于23";
casePERMISSION_DENIED_ERROE:
return"沒有指紋識別權(quán)限";
caseHARDWARE_MISSIING_ERROR:
return"沒有指紋識別模塊";
caseKEYGUARDSECURE_MISSIING_ERROR:
return"沒有開啟鎖屏密碼";
caseNO_FINGERPRINTERS_ENROOLED_ERROR:
return"沒有指紋錄入";
caseFINGERPRINTERS_FAILED_ERROR:
return"指紋認(rèn)證失敗";
default:
return"";
}
}
以上就是關(guān)于用RxJava實現(xiàn)Android指紋識別代碼的詳細(xì)介紹,最后想向大家強調(diào)一點,學(xué)編程基礎(chǔ)一定要打牢,所有的概念和知識點必須理解透徹,解更多請關(guān)注扣丁學(xué)堂
Android培訓(xùn)官網(wǎng)、微信公眾號平臺,扣丁學(xué)堂
Android視頻教程從零基礎(chǔ)到精通免費試聽試學(xué),就業(yè)終端服務(wù)系統(tǒng)隨時監(jiān)控學(xué)員的學(xué)習(xí)情況和效果,順利畢業(yè)后根據(jù)學(xué)員自身風(fēng)格和學(xué)習(xí)效果推薦就業(yè)。如果你想要學(xué)習(xí)Android開發(fā)工程師技術(shù)就不要再猶豫了,喜歡就付諸行動吧。
【關(guān)注微信公眾號獲取更多的學(xué)習(xí)資料】
標(biāo)簽:
Android開發(fā)從入門到精通
Android學(xué)習(xí)路線圖
Android培訓(xùn)
Android開發(fā)工程師
Android視頻教程