用 RxJava 实现 Android 指纹识别代码

[复制链接]
来自: hellokenken 分类: Android精品源码 上传时间: 2018-2-23 10:36:58
Tag:

项目介绍:

用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<Boolean> observer = new DisposableObserver<Boolean>() {

                @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 "";
    }
}

相关源码推荐:

我来说两句
所有评论(115)
hellokenken 2018-2-23 10:37:11
精华内容,楼主V5!
回复
apkbus热心网友 2018-2-23 10:42:47
楼主用心了,内容非常精彩。
回复
九酒 2018-2-23 10:55:38
楼主威武,以后多发干货,多办活动~!
回复
a954475339 2018-2-23 10:58:47
安卓巴士是个不错的网站,我来顶个贴~
回复
tintins 2018-2-23 11:04:38
感谢分享,楼主V5~
回复
sjp1278958420 2018-2-23 11:11:39
感谢分享,安卓巴士有你更精彩:)
回复
ffg12 2018-2-23 11:19:38
感谢大神~
回复
提取码:  下载次数:48 状态:已购或VIP 售价:15(原价:15)金钱 下载权限:初级码农 
7241 1 48
代码贡献英雄榜
用户名 下载数
联系我们
首页/微信公众账号投稿
帖子代码编辑/版权问题
QQ:435399051,1294855032
如何获得代码达人称号?
如何成为签约作者?
领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )