Applet Digital Persona Finger Print DPFPTemplate

Requerimientos

  • Bajar el SDK de Digital Persona
  • Instalar SDK.

Introducir dentro de tu directorio de JAVA los archivos que se encuentran dentro de la dirección:

C:\Archivos de programa\DigitalPersona\Bin\Java

Copiar los archivos:

  • dpfpenrollemnt
  • dpfpverification
  • dpotapi
  • dpotjni

C:\Archivos de programa\Java\jdk1.6.0_24\jre\lib\ext

Estos archivos son las librerías que necesitarás para poder implementar la funcionalidad a la aplicación.

_ Creación de proyecto applet

A diferencia de otras aplicaciones que se pueden encontrar en internet yo implemento los escuchadores dentro de la clase para poder de este modo tener el control de los eventos y poder manipular de manera más sencilla el lector de huella además que se ve más limpio el código. Lo más importante es saber que para crear un template se necesitan crear features y después enrolarlos, después el enrollement tiene funciones para saber si el template está listo. Por default son 4 veces las que se necesita poner el dedo sobre el lector para poder generar un template. En este ejemplo no desarrollo la parte de configuración en esta parte únicamente meteré el template en un arreglo de bytes.

Primero se debe implementar los escuchadores en la clase.

 public class Sensor implements DPFPSensorListener, DPFPDataListener, 

De este modo se necesitarán crear las funciones para cada escuchador (netbeans creará automáticamente las funciones), la función que ocuparemos será dataAcquired

Se crea la captura de la siguiente manera:

public DPFPCapture CAPTURA = DPFPGlobal.getCaptureFactory().createCapture();

Las siguientes variables se necesitan para poder crear un template de la huella digital.

private DPFPEnrollment HUELLA;
public DPFPFeatureSet EXTRACTION;
public DPFPTemplate TEMPLATE;

Después tienes que crear una función que ponga de alta a los eventos,

public void init(){
    CAPTURA.addSensorListener(this);
    CAPTURA.addDataListener(this);
    CAPTURA.startCapture(); 
}

Al poner el dedo sobre el lector de huella digital una vez que inicias el programa entrará en la función de dataAcquired quien se define de la siguiente manera y contiene los siguientes parámetros:

@Override
public void dataAcquired(DPFPDataEvent dpfpde) { }

Este es el primer paso, ya que tenemos la información del lector en la variable dpfpde que es un parámetro del método dataAcquired necesitamos obtener la información, para lo cual necesitamos hacer el siguiente procedimiento.

Se necesita crear un feature creamos el siguiente método que nos regresará un feature, para crear un template como lo mencioné necesitamos crear 4 features así que la siguiente función nos regresa un feature.

protected DPFPFeatureSet extractFeatures(DPFPSample sample, DPFPDataPurpose purpose){
   DPFPFeatureExtraction extractor = DPFPGlobal.getFeatureExtractionFactory().createFeatureExtraction();
   try {
      return extractor.createFeatureSet(sample, purpose);
   } catch (DPFPImageQualityException e) {
      return null;
   }
}

Lo siguiente es agregar a la función dataAcquired la siguiente sentencia. ** es importante poner el data purpose pues existen varios propósitos y el que nosotros necesitamos para crear el template es el enrollment.

//Mandamos en los parametros el evento.getSample que es lo que trae el sensor, demás el propósito.
EXTRACTION = extractFeatures(dpfpde.getSample(), DPFPDataPurpose.DATA_PURPOSE_ENROLLMENT); 

Una vez creado el feature necesitamos crear un enrollment, y lo hacemos de la misma manera, tenemos una función que nos regresa pero está vez es un template lo que nos regresa

protected DPFPTemplate enrollment_huella(DPFPFeatureSet featureSet) throws DPFPImageQualityException{
   if(HUELLA == null) HUELLA = DPFPGlobal.getEnrollmentFactory().createEnrollment();
   HUELLA.addFeatures(featureSet);
   if( HUELLA.getTemplateStatus() == DPFPTemplateStatus.TEMPLATE_STATUS_READY){
      return HUELLA.getTemplate();
   }
      else return null; 
}

Explico la función.. ya que tenemos el feature del paso anterior para crear un template necesitamos enrolar 4 features y de esa manera generar el template, lo primero que hacemos es verificar si el enrollement ya está creado, si no hacemos este paso siempre marcará un nuevo enrollement y nunca se juntarán los 4 features para crear el template. después a la variable HUELLA que es de tipo enrollment le agregamos los features y por ultimo revisamos si el template está listo. ** si es la primera vez no va a estar listo el template, debemos correr y poner 4 veces el dedo para poder generar el template.

Para mandar llamar la función dentro del método dataAcquired ponemos la siguiente sentencia.

TEMPLATE = enrollment_huella(EXTRACTION);

@Override
public void dataAcquired(DPFPDataEvent dpfpde) { 
   EXTRACTION = extractFeatures(dpfpde.getSample(), DPFPDataPurpose.DATA_PURPOSE_ENROLLMENT); 
   try {
      TEMPLATE = enrollment_huella(EXTRACTION);
   } catch (DPFPImageQualityException ex) {
      Logger.getLogger(Sensor.class.getName()).log(Level.SEVERE, null, ex);
   }

}

De esta manera tenemos el template.. ya si queremos mandarlo a un arreglo para enviarlo a una base de datos lo podemos hacer de la siguiente forma. El proyecto utiliza RUBY&RAILS y Mysql para guardar la huella, ustedes pueden crear funciones para poder enviarlo por java directo a una base de datos en mysql.

ByteArrayInputStream HUELLA = new ByteArrayInputStream(TEMPLATE.serialize());

QUIERO DECIRLES QUE ANTES DE PENSAR EN DESARROLLAR UNA APLICACIÓN DE HUELLA DIGITAL INVESTIGUEN COMO FUNCIONAN PORQUE MUCHOS PIENSAN QUE ES MUY FACIL MANIPULAR LAS HUELLAS CON SQL Y HACER CONSULTAS DIRECTAS A REGISTROS GUARDADOS. Como lo dije anteriormente un Template es una serie de bits que con un algoritmo se puede obtener y cada template es diferente. La comparación de templates no se pueden hacer en con consultas de SQL, deben hacerse en una aplicación con el SDK en el server.

¡Espero que les sirva! Cualquier duda en la instalación o comentario...

Creado el 11 de Agosto del 2011

Esperen el próximo mes hacer algo similar con una Chrome app...

Jose Carlos Lopez

Trabajo para que Kioru cada día sea una de las mejores empresas de tecnología de México y America Latina.
Ver el perfil de José Carlos López en LinkedInVer el perfil de José Carlos López

Leave a comment

Make sure you enter all the required information, indicated by an asterisk (*). HTML code is not allowed.