天天看點

#Android-中控指紋儀Live R20 開發注意事項#Android-中控指紋儀Live R20 開發注意事項

Android-中控指紋儀Live R20 開發注意事項

一.所需裝置

  • 1.一台支援USB接口的Android裝置,某寶上面有的。例如:
    #Android-中控指紋儀Live R20 開發注意事項#Android-中控指紋儀Live R20 開發注意事項

    (這個螢幕大約32寸,作業系統是Android 5.1,支援觸摸,支援USB接口,兩個USB接口,支援插網線,支援打王者榮耀,吃雞等~)

    這個超級重的倒是真的,隻能挂牆上打。

  • 2.一個或者兩個指紋儀,這個指紋儀型号是Live R20的例如:
    #Android-中控指紋儀Live R20 開發注意事項#Android-中控指紋儀Live R20 開發注意事項
    附帶USB接頭。

二.所需JAR包

1.導入架包

#Android-中控指紋儀Live R20 開發注意事項#Android-中控指紋儀Live R20 開發注意事項

架包怎麼導入自己的Android工程項目裡面我就不說了。

2.架包大緻核心類

#Android-中控指紋儀Live R20 開發注意事項#Android-中控指紋儀Live R20 開發注意事項

最主要的就是指紋儀管理類,事件監聽類,以及指紋算法庫了

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

1.注意事項

  • 1.指紋儀插入裝置時候,如果要預設打開自己寫的指紋儀軟體,請在AndroidManifest.xml的主入口加上相關intent-filter配置。

    例如:

  • 2 XML重的 @xml/device_filter 為:

    <?xml version="1.0" encoding="utf-8"?>

  • 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