如何在Android中通过byte []创建数字角色FMD?

时间:2019-11-28 05:49:07

标签: android fingerprint digital-persona-sdk uareu-sdk

我能够将FMD保存到Android中的SQLite。但是,当我尝试重新创建FMD时,它无法正常工作。

将FMD保存在数据库中。

try {
                        Fmd m_enrollmant_fmd = m_engine.CreateEnrollmentFmd(Fmd.Format.ANSI_378_2004, enrollThread);
                        if (m_success = (m_enrollmant_fmd != null)) {
                            byte[] fingerprintData = m_enrollmant_fmd.getData();
                            int fingerprintImageHeight = m_enrollmant_fmd.getHeight();
                            int fingerprintImageWidth = m_enrollmant_fmd.getWidth();
                            int fingerprintResolution = m_enrollmant_fmd.getResolution();
                            int fingerPosition = m_enrollmant_fmd.getViews()[0].getFingerPosition();
                            int cbeffId = m_enrollmant_fmd.getCbeffId();
                            int m_templateSize = m_enrollmant_fmd.getData().length;
                            m_current_fmds_count = 0; // reset count on success
                            // Save above values in database and this is working fine.
                        }
                    } catch (Exception e) {
                        m_current_fmds_count = 0;
                    }

重新创建FMD代码:

Fmd temp_fmd = m_engine.CreateFmd(
                                user.fingerPrint,  // byte[]
                                user.width,  // width
                                user.height, // height
                                user.resolution, // resolution
                                user.fingerPrint, //Finger position,
                                user.cbeffId, // Cbeff Id
                                Fmd.Format.ANSI_378_2004); // Format algorithm


                        if (temp_fmd != null) {
                            // m_fmd is FMD that we generate after taking fingerprint
                            int m_score = m_engine.Compare(m_fmd, 0, temp_fmd, 0);
                            if (m_score < (0x7FFFFFFF / 100000)) {
                                userFound = user;
                                break;
                            }
                        }

这给我UareUException,说FID无效。但是,当我尝试在m_engine.CreateFmd(...)中给出除byte []参数之外的固定值时,它可以正常工作,但其相异性为100%,这意味着它根本不匹配。任何帮助将不胜感激。我正在使用Crossmatch的UareU SDK 3.1(以前称为Digital Persona)。

请注意,来自数据库的值是正确的,因此没有问题。只有我无法创建正确的FMD。

1 个答案:

答案 0 :(得分:0)

尝试使用以下命令从字节数组重新创建Fmd:

Fmd print = UareUGlobal.GetImporter().ImportFmd(prints, Fmd.Format.ANSI_378_2004, Fmd.Format.ANSI_378_2004);

这里打印的是您的字节数组。