0

此代码是否需要 Digital Persona One Touch RTE(运行时环境)才能工作?:

DPFPVerification verifier  = DPFPGlobal.getVerificationFactory().createVerification();

如果是这样,是否有另一种方法可以仅使用 dpfp JAR 针对数字角色模板(序列化)验证数字角色 SampleFeatures(序列化)?

原因:我们计划在 TIBCO 提供的 Web 服务上安装 DPFP 验证程序。

任何帮助是极大的赞赏!

我使用此示例测试主代码得到 Java JNI 异常:

import com.digitalpersona.onetouch.DPFPFeatureSet;
import com.digitalpersona.onetouch.DPFPFeatureSetFactory;
import com.digitalpersona.onetouch.DPFPGlobal;
import com.digitalpersona.onetouch.DPFPTemplate;
import com.digitalpersona.onetouch.DPFPTemplateFactory;
import com.digitalpersona.onetouch.verification.DPFPVerification;
import com.digitalpersona.onetouch.verification.DPFPVerificationResult;


public class Main {

    /**
     * fingerScanTemplate is from WC DB
     * sample is from the WS input parameters
     */
    public boolean performVerification(byte[] fingerScanTemplate, byte[] sampleFeatures) {
            DPFPTemplateFactory templateFactory         = DPFPGlobal.getTemplateFactory();
            DPFPFeatureSetFactory featureSetFactory     = DPFPGlobal.getFeatureSetFactory();
            DPFPVerification      verifier                          = DPFPGlobal.getVerificationFactory().createVerification();

            // Deserialize template & sampleFeature
            DPFPTemplate deserializedTemplate = templateFactory.createTemplate(fingerScanTemplate);
            DPFPFeatureSet features = featureSetFactory.createFeatureSet(sampleFeatures);

            //Compare the feature set with the template, based on which finger was captured
            DPFPVerificationResult result = null;
            result = verifier.verify(features, deserializedTemplate);

            return result != null && result.isVerified();
         }



    /**
     * @param args
     */
    public static void main(String[] args) {
        new Main().performVerification(null, null);
    }

}
4

1 回答 1

1

不,你不应该需要某种 RTE。我确实知道我必须安装 One Touch SDK,因为它运行称为生物识别扫描或类似的 Windows 服务。我在您的代码中看到的主要问题是:

DPFPVerificationResult result = null;

result = verifier.verify(features, deserializedTemplate);

需要是:

DPFP.Verification.Verification.Result result = new DPFP.Verification.Verification.Result();

verifier.verify(features, template, ref result );

至少这就是让我的代码开始正确验证的原因。我还必须纠正程序员在创建 FeatureSet 时的错误,需要这样做:

DPFP.FeatureSet features = ExtractFeatures(Sample, DPFP.Processing.DataPurpose.Verification);

我感觉您使用的 SDK 比我旧,但也许这会有所帮助。

于 2012-05-01T16:11:04.690 回答