1

アプレットを使用して、文字列の形式で機能セットをキャプチャしました。その文字列をバイトに変換し直して、一致させるために逆シリアル化する必要があります。しかし、テンプレートと機能セットを比較していないため、どこが間違っているのかわかりません。私はこれと何週間も戦ってきました、誰か助けてください。

//Converting string stored in db back to template:
            byte[] byteArray = new byte[1];
            byteArray = hexStringToByteArray(dbTemplate);
            DPFPTemplate template = DPFPGlobal.getTemplateFactory().createTemplate();
            template.deserialize(byteArray);

//Converting featureset string captured by applet 
            byte[] fsArray = new byte[1];
            fsArray = hexStringToByteArray(ftsetstring);
            DPFPFeatureSet features = null;
            features.deserialize(fsArray);

//Comparing template with features acquired
            DPFPVerification matcher =   DPFPGlobal.getVerificationFactory().createVerification();
            DPFPVerificationResult fresult = matcher.verify(features, template);

                if (fresult.isVerified()) {

                    return "The fingerprint was VERIFIED.";

                } else {
                    return "The fingerprint was NOT VERIFIED.";

私のエラーはどこにありますか?

4

2 に答える 2

0

私はこれまでDigitalPersonaを使用したことがありませんが、どのAPIでも、次のようになります。

        DPFPFeatureSet features = null;
        features.deserialize(fsArray);

を引き起こしますNullPointerException。クラスを正しく使用する方法を調べようとしましたが、javadocを表示するには、DigitalPersonaのメンバーである必要があります。ごめん!

于 2012-11-09T02:26:37.030 に答える
0

まず、指紋デバイスから機能を取得するには、データリスナーを備えたキャプチャーが必要です。

DPFPCapture capturer=DPFPGlobal.getCaptureFactory().createCapture();
capturer.addDataListener(new DPFPDataListener(){
    public void dataAcquired(DPFPDataEvent e){
        DPFPSample sample=e.getSample();
        DPFPFeatureSet features=extractor.createFeatureSet(sample, DPFPDataPurpose.DATA_PURPOSE_ENROLLMENT);
        // Serialize or verify features
    }
});

シリアル化する場合:

DPFPEnrollment enroller=DPFPGlobal.getEnrollmentFactory().createEnrollment();
enroller.addFeatures(features);
if(enroller.getFeaturesNeeded()==0){
    byte[] result=enroller.getTemplate().serialize();
    // Save result in data base
}

確認する場合:

// Get byte[] result from data base
DPFPTemplateFactory templateFactory=DPFPGlobal.getTemplateFactory();
DPFPVerificationResult verificator=verificator.verify(features, templateFactory.createTemplate(result));
if(verificator.isVerified()){
    // Grant access
}
于 2013-05-20T23:52:42.290 に答える