解析用RxJava实现Android指纹识别代码
RxJava的核心内容很简单,就是进行异步操作。类似于Handler和AsyncTask的功能,但是在代码结构上不同。RxJava使用了观察者模式和建造者模式中的链式调用(类似于C#的LINQ)。
观察者模式:Observable(被观察者)被Observer(观察者)订阅(Subscribe)之后,Observable在发出消息的时候会通知对应的Observer,并且,一个Observable可以有被多个Observer订阅。
链式调用:和Builder模式类似,调用对应的方法对原对象进行处理后返回原对象,从而做到链式调用。
下面我们用rxjava封装了指纹识别,并实现类似Glide生命周期绑定,顺便开发了一个指纹控件。
Setup
测试机型推荐android版本6.0以上且具有指纹模块。
在项目build.gradle中配置 :
repositories {
jcenter() // If not already there
}
在Module中build.gradle中配置 :
Download
dependencies {
compile 'com.zwh:RxFingerPrinter:1.1.0'
}
Usage
创建一个 RxFingerPrinter实例 :
RxFingerPrinter rxFingerPrinter = new RxFingerPrinter(this); // where this
is an Activity instance
在需要开启指纹识别的地方执行begin方法并订阅:
// 可以在oncreat方法中执行
DisposableObserver observer = new DisposableObserver() {
@Override
protected void onStart() {
}
@Override
public void onError(Throwable e) {
//处理错误信息
if(e instanceof FPerException){
Toast.makeText(MainActivity.this,((FPerException)
e).getDisplayMessage(),Toast.LENGTH_SHORT).show();
}
}
@Override
public void onComplete() {
}
@Override
public void onNext(Boolean aBoolean) {
if(aBoolean){
//指纹验证成功
}else{
//指纹验证失败
}
}
};
rxfingerPrinter.begin().subscribe(observer);//RxfingerPrinter会自动在onPause()时暂停指纹监听,onResume()时恢复指纹监听)
rxfingerPrinter.addDispose(observer);//由RxfingerPrinter管理(会在onDestroy()生命周期时自动解除订阅),已可以不调用该方法,自己解除订阅
用FPerException封装了一下指纹识别时可能出现的异常,可以在订阅的Subscriber的onError(Throwable
e)中获取该异常
@Override
public void onError(Throwable e) {
if(e instanceof FPerException){//判断该异常是否为FPerException
Toast.makeText(MainActivity.this,((FPerException)
e).getDisplayMessage(),Toast.LENGTH_SHORT).show();
}
可以根据((FPerException) e).getCode()来获取对应的错误码,也可以直接调用((FPerException)
e).getDisplayMessage()提示默认的错误信息。
public String getDisplayMessage() {
switch (code) {
case SYSTEM_API_ERROR:
return "系统API小于23";
case PERMISSION_DENIED_ERROE:
return "没有指纹识别权限";
case HARDWARE_MISSIING_ERROR:
return "没有指纹识别模块";
case KEYGUARDSECURE_MISSIING_ERROR:
return "没有开启锁屏密码";
case NO_FINGERPRINTERS_ENROOLED_ERROR:
return "没有指纹录入";
case FINGERPRINTERS_FAILED_ERROR:
return "指纹认证失败";
default:
return "";
}
}
以上就是关于用RxJava实现Android指纹识别代码的详细介绍,最后想向大家强调一点,学编程基础一定要打牢,所有的概念和知识点必须理解透彻,解更多请关注扣丁学堂Android培训官网、微信公众号平台,扣丁学堂Android视频教程从零基础到精通免费试听试学,就业终端服务系统随时监控学员的学习情况和效果,顺利毕业后根据学员自身风格和学习效果推荐就业。如果你想要学习Android开发工程师技术就不要再犹豫了,喜欢就付诸行动吧。