#Android-中控指纹仪Live R20 开发注意事项#

Android-中控指纹仪Live R20 开发注意事项

一.所需设备

  • 1.一台支持USB接口的Android设备,某宝上面有的。例如:

    (这个屏幕大约32寸,操作系统是Android 5.1,支持触摸,支持USB接口,两个USB接口,支持插网线,支持打王者荣耀,吃鸡等~)
    这个超级重的倒是真的,只能挂墙上打。
  • 2.一个或者两个指纹仪,这个指纹仪型号是Live R20的例如:

    附带USB接头。

二.所需JAR包

1.导入架包

架包怎么导入自己的Android工程项目里面我就不说了。

2.架包大致核心类

最主要的就是指纹仪管理类,事件监听类,以及指纹算法库了

三.使用方式以及注意事项

1.注意事项

  • 1.指纹仪插入设备时候,如果要默认打开自己写的指纹仪软件,请在AndroidManifest.xml的主入口加上相关intent-filter配置。

    例如:

  • 2 XML重的 @xml/device_filter 为:

  • 3 所保存的指纹数据在APP关闭的时候,会全部丢失!需要自己做本地数据库的缓存,需要保存 byte[]数据。

1.使用方式

  • 1.初始化

    初始化指纹仪,设置VID和PID

    LogHelper.setLevel(Log.WARN);
    Map<String, Object> fingerprintParams = new HashMap<>();
    //设置VID
    fingerprintParams.put(ParameterHelper.PARAM_KEY_VID, VID);
    //设置PID
    fingerprintParams.put(ParameterHelper.PARAM_KEY_PID, PID);
    fingerprintSensor = FingprintFactory.createFingerprintSensor(this, TransportType.USB, fingerprintParams);

  • 2.定义采集回调事件

    private FingerprintCaptureListener FingerListener1, FingerListener2;

    构造方法:

    FingerListener1 = new FingerprintCaptureListener() {
    @Override
    public void captureOK(final byte[] fpImage) {
    runOnUiThread(new Runnable() {
    @Override
    public void run() {
    //任何处理只能在UI线程中进行
    }
    });
    }
    @Override
    public void captureError(FingerprintException e){
    }
    @Override
    public void extractOK(byte[] fpTemplate) {
    //指纹模板采集成功 一般在这里进行算法处理
    }
    @Override
    public void extractError(final int i) {
    }
    };

  • 3 开启采集 绑定到指纹仪的管理

    try {
    //打开指纹仪1
    fingerprintSensor.open(0);
    //设置监听 将监听绑定到指纹1上面 先绑定监听 在启动异步采集
    fingerprintSensor.setFingerprintCaptureListener(0, FingerListener1);
    //启动采集
    fingerprintSensor.startCapture(0);
    } catch (FingerprintException f) {
    f.fillInStackTrace();
    ToastUtil.showToast("指纹仪1,启动异常!");
    }

  • 4 停止采集和释放资源

    fingerprintSensor.stopCapture(0);//1.先停止采集
    fingerprintSensor.close(0);//2.关闭指纹仪
    fingerprintSensor.destroy(); //3.释放相关资源

四.API 接口相关

1.FingerprintSensor 指纹仪管理类API

  • 1.连接设备:public void open(int index)
  • 2.关闭设备:public void close(int index)
  • 3.事件关联设备: ublic void setFingerprintCaptureListener(int index,
    FingerprintCaptureListener listener)
  • 4.销毁资源:public static void destroy(FingerprintSensor fingerprintSensor)
  • 5.获取指纹图像宽:public static int getImageWidth()
  • 6.获取指纹图像高:public static int getImageHeight()
  • 7.获取指纹模板数据长度:public static int getLastTempLen ()
  • 8.设置防假开关(仅支持SILK20R):public static void setFakeFunOn(int fakeFunOn)
  • 9.获取当前指纹状态:public static int getFakeStatus()

2.FingerprintCaptureListener 事件监听类API

  • 1.采集图像成功:void captureOK( byte[] fpImage
  • 2.采集图像失败:void captureError(FingerprintSensorException e)
  • 3.采集模板成功:void ex tractOK( byte[] fpTemplate );
  • 4.提取模板失败:void extractError(int errno)

3.ZKFingerService 指纹算法处理类类API

  • 1.比对两枚指纹模板:static public int verify(byte[] temp1, byte[] temp2)
  • 2.将指纹模板与缓存中指定id的指纹模板进行匹配(即1:1比对),返回匹
    配分数。:static public int verifyId( byte[] temp, String id)
  • 3.将指纹模板数据与缓存中的指纹模板数据进行匹配(即1:N比对):static public int identify(byte[] temp, byte []idstr, int threshold, int count)
  • 4.合并 3 个指纹模板为登记模板:static public int merge(byte[] temp1, byte[] temp2, byte[] temp3, byte[]
    temp)
  • 5.将指纹模板数据保存到缓存。用户将自己数据库中需要用到的指纹数
    据,通过调用save方法保存到缓存中:static public save ( byte[] temp, String id )
  • 6.获取缓存中指定 id 的指纹模板数据:static public int get ( byte[] temp, String id )
  • 7.从内存中删除登记的指纹模板:static public int del(String id)
  • 8.清空缓存中的所有指纹数据:static public int clear ()
  • 9.获取缓存中当前存储的指纹模板数:static public int count()

4.FingerprintStatusCode错误类对照表

-20001 打开设备失败

-20002 关闭设备失败

-20003 获取 GPIO 失败

-20004 设置 GPIO 失败

-20005 读 EEPROM 失败

-20006 从 USB 获取图像失败

-20007 探测 USB 图像失败

-20008 输入缓存不够

-20009 读取数据异常

-20010 采集指纹失败

-20011 解密图像数据失败

-20012 启动采集线程失败

-20013 停止采集线程失败

-20014 初始化指纹设备失败

-20015 设置校正参数失败

ERR_NOT_FOUND -5000 没有找到制定 id 指纹模板

ERR_PARAM -5002 参数错误

ERR_TEMPLATE -5003 指纹模板错误

ERR_METHOD -5004 方法错误

五.总 结

其实这里面还是有很多坑的,开始明明登记好的指纹,结果返回到另外一个页面,指纹就没了,指纹仪拔出来,然后指纹又没了,APP重启一下,登记的指纹也没有了,莫名奇妙。
后来发现是需要自己做缓存的,每一次启动,都要进行注册一下,不然就无法进行指纹认证,不过这个的指纹匹配度和灵敏度还是蛮高的,识别率也很高。

踩坑的过程还是蛮有趣的,然后自己又把坑填上,然后再解决,十分有意思。

原文地址:https://www.cnblogs.com/jiangtuanyuan/p/9750543.html

时间: 2024-10-10 19:14:04

#Android-中控指纹仪Live R20 开发注意事项#的相关文章

android音视频点/直播模块开发

前言 随着音视频领域的火热,在很多领域(教育,游戏,娱乐,体育,跑步,餐饮,音乐等)尝试做音视频直播/点播功能,那么作为开发一个小白,如何快速学习音视频基础知识,了解音视频编解码的传输协议,编解码方式,以及如何技术选型,如何解决遇到的坑,本文抛砖引玉,欢迎大咖交流. 一. 音视频的基础知识 1.1 基本概念 视频是什么 静止的画面叫图像(picture).连续的图像变化每秒超过24帧(frame)画面以上时,根椐视觉暂留原理, 人眼无法辨别每付单独的静态画面,看上去是平滑连续的视觉效果.这样的连

Android深度探索HAL与驱动开发 第四章

Android深度探索HAL与驱动开发 第四章 源代码的下载和编译 读书笔记 一.下载编译和测试Android源代码 1.配置Android源代码下载环境 创建一个用于存放下载脚本文件的目录(可将该文件放到任何一个目录在这里使用-/bin) # mkdir ~/bin # PATH=~/bin:$PATH 2.下载repo脚本文件(用于下载Android源代码) # curl htttps://dl-ssl.google.com/dl/googlesource/git-repo/repo> ~/

Android深度探索HAL与驱动开发 第三章

Android深度探索HAL与驱动开发 第三章 Git使用入门 读书笔记 Git是对源代码进行管理的软件. 一.安装Git # apt-get install git # apt-get install git-doc git-emall git-gui gitk 用以下命令控制Git: # apt-get install git-core # apt-get install git-doc git-svn git-email git-gui gitk 二.查看Git文档 查看git-check

高拍仪拍照SDK开发(良田影像S300L|S500L)

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 高拍仪拍照SDK开发下载地址:点击下载 本SDK适用于:良田影像S300L|S500L 高拍仪如图: SDN开发包安装之后找到安装目录,如图: 大家找到各自需要的版本即可,需要注意的是如果需要上传图片到服务器的话,我已经写好了C#版的接受程序,

Android深度探索HAL与驱动开发 第二章

Android深度探索HAL与驱动开发 第二章 搭建Android开发环境 读书笔记 一.Android底层开发需要的工具 1.JDK6或以上版本 2.Eclipse3.4或以上版本 3.ADT(用于开发Android的应用程序) 4.CDT(用于开发Android NDK程序) 5.Android SDK 6.Android NDK 7.交叉编译环境 8.Linux内核源代码 9.Android源代码 10.用于调试开发板的串口工具:minicom 二.安装JDK 下载JDK后在终端输入 #

Android基础入门教程——1.2 开发环境搭建

Android基础入门教程--1.2 开发环境搭建 现在主流的Android开发环境有: ①Eclipse + ADT + SDK ②Android Studio + SDK ③IntelliJ IDEA + SDK 现在国内大部分开发人员还是使用的Eclipse,而谷歌宣布不再更新ADT后,并且官网也去掉了集成Android开发环境的Eclipse下载链接,各种现象都表示开发者最后都终将过渡到Android Studio,当然这段过渡时间会很长,但如果你是刚学Android的话建议直接冲And

Android中控件的宽高

1.在一个Relatitivelayout布局里用代码add一个独立的button布局,结果该button的宽高无效 则说明:Android中控件默认是没有宽高的,只有五大布局才能给其宽高,即在代码中要设置控件的宽高需要使用福控件的layoutparams 命名规则:layout_width 想通的:layout_gravity和gravity 2.直接在activity中setContentView里引用最外层为button的布局,则也有宽高 原因:android默认在最外层给添加了Frame

中控指纹认证

版本SDK5.0 [DllImport("Match.dll")] static extern bool process(string a, string b); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (!string.IsNullOrEmpty(Request.Form["finger"])) { //var fpProcess = new FPCo

开发者必看|Android 8.0 新特性及开发指南

背景介绍 谷歌2017 I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 Android 系统,今年为 Android 8.0.谷歌在今年3 月21日发布 Android 新系统开发者预览版时已给新系统取名为 Android O.自2008 年发布以来, Android 依靠 Google 的生态运作,全球市场份额在2016年底已超过85% .而近几年依靠 Android 发展起来的智能手机厂商不断增加, Android 生态大家庭也正在不断壮大. Androi