2012-11-09 3 views
0

애플릿을 사용하여 문자열 형식으로 기능 세트를 캡처했습니다. 그 문자열을 다시 바이트로 변환하고 deserialize하여이를 일치시켜야합니다. 하지만 필자는 템플릿을 기능 세트와 비교하지 않는 것으로 잘못 알고 있습니다. 나는 몇 주 동안 이걸로 싸워 왔어. 누구든지 나를 도와 줘.Digital Persona one touch sdk - Java에서 확인을 수행 할 수 없습니다.

//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."; 

내 오류는 어디에 있습니까 ???

답변

0

내가 전에 디지털 페르소나를 사용한 적이 있지만, 어떤 API,이 :

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

NullPointerException의 원인이됩니다. 클래스를 올바르게 사용하는 방법을 찾으려고했지만 javadoc을 보려면 Digital Persona의 멤버 여야합니다. 죄송합니다! 당신이 직렬화하는 경우

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 
    } 
}); 

: 모든

+0

고마워요. 네, 널 포인터 예외가 있습니다. 마침내 나는 올바른 수업을 알아 냈습니다. – Div

0

첫째, 당신은 지문 장치에서 기능을 얻기 위해 데이터 청취자와 포착 기 필요

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 
}