登录

解析用RxJava实现Android指纹识别代码

2018-02-24  本文已影响27人  994d14631d16

  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开发工程师技术就不要再犹豫了,喜欢就付诸行动吧。

上一篇下一篇

猜你喜欢

热点阅读