Android 指纹比对SDK - 外接设备

Android SDK for fingerprint matching - External device

我正在开发一个 Android 应用程序,它使用 U.are.U 4500 指纹 reader 来识别用户。我已经有一个后端服务器,它使用 SQL 服务器来存储和注册用户数据,现在我需要我的应用程序能够读取用户指纹并验证该指纹是否与数据库中的任何指纹匹配。有谁知道能够进行这种比较的 SDK?

我正在使用 asia.kanopi.fingerscan 包来读取用户指纹,我已经进行了扫描,现在我只需要获取此图像并与 SQL 数据库中的数据进行比较。我在 Whosebug 上看到了一些答案告诉我使用 openCV 库 Android,但是其中的 none 可以指导我如何去做。

我的开发基于本教程:https://medium.com/touch4it/fingerprint-external-scanner-with-usb-database-sdk-64c3ec5ea82d,但遗憾的是我无法在任何地方找到 SDK IDKit Fingerprint SDK Mobile。

如何才能将图像与数据库中存储的图像成功匹配?

要在服务器端匹配用户,您必须使用 AFIS 服务器:https://en.wikipedia.org/wiki/Integrated_Automated_Fingerprint_Identification_System

这里是 AFIS 解决方案的一些供应商:

致那些仍在寻找此问题答案的人。自从我真正实施我的解决方案以来已经有一段时间了,当我这样做时,我将这一行添加到我的应用程序 gradle 文件中:

com.github.lmone:SourceAFIS-Android:v3.4.0-fix3

但现在我似乎无法在任何地方找到 github link。也许存储库已被删除。如果有人找到它,请发给我,这样我就可以在这里更新我的答案。

除此之外,如果您仍然可以将库添加到您的 Android 项目中,基本思路是使用一个 FingerprintMatcher 来比较两个 FingerprintTemplate

示例:

FingerprintTemplate probe = new FingerprintTemplate().dpi(500).create(digital_byte_array);

while (result.next()) {
    byte[] imgCandidate = digital_to_compare;
    FingerprintTemplate candidate = new FingerprintTemplate()
            .dpi(500)
            .create(imgCandidate);

    double score = new FingerprintMatcher()
            .index(probe)
            .match(candidate);

    if (score >= 40) {
        // Found a match
    }
}
            

就我而言,我发现性能有点慢。它是可用的,但与 Android 的 built-in 指纹设备相比毫无意义。此外,您的数字越大 collection,找到匹配项所需的时间就越长。

比赛的得分由您决定哪个更适合您的项目。 40 对我来说是一个可靠的数量。 FingerprintTemplate dpi 也是如此。

此外,方法 .create() 接收一个 byte[] 作为参数。

编辑

我找到了这个 link 并且我几乎可以肯定它是我使用的库,但是在一个新的存储库名称下:

https://github.com/robertvazan/sourceafis-java

文档看起来和我使用的代码一样:https://sourceafis.machinezoo.com/java