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

时间:2024-01-21 21:05:43

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重启一下,登记的指纹也没有了,莫名奇妙。
后来发现是需要自己做缓存的,每一次启动,都要进行注册一下,不然就无法进行指纹认证,不过这个的指纹匹配度和灵敏度还是蛮高的,识别率也很高。

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