Anteriormente hemos visto cómo capturar y guardar huellas digitales en una base de datos en MySQL (si no sabes a lo que me refiero lee las partes
de este tutorial) ahora toca el turno a la verificación de una identidad por medio de la huella e identificación de una persona.
Aquí diferenciamos claramente que al momento de identificar una huella seleccionamos todas las huellas de la base de datos (que posteriormente compararemos una por una con la que tenemos actualmente para identificar a quién pertenece dicha huella), pero al momento de verificar solamente tomamos un registro de huella filtrando con el nombre de la persona a quien pertenece.
¿Todo perfectamente claro? Ok. Sigamos con el código que va a realizar la primer función: Verificar.
/**
* Verifica la huella digital actual contra otra en la base de datos
*/
public void verify(String nom) {
try {
//Obtiene la plantilla correspondiente a la persona indicada
verificarStmt.setString(1,nom);
ResultSet rs = verificarStmt.executeQuery();
//Si se encuentra el nombre en la base de datos
if (rs.next()){
//Lee la plantilla de la base de datos
byte templateBuffer[] = rs.getBytes("huehuella");
//Crea una nueva plantilla
Template referenceTemplate = new Template(templateBuffer);
//compara las plantilas (actual vs bd)
boolean coinciden = fingerprintSDK.verify(template,referenceTemplate);
//Si corresponden, dibuja el mapa de correspondencia y lo indica con un mensaje
if (coinciden){
ui.showImage(GrFingerJava.getBiometricImage(template, fingerprint, fingerprintSDK));
JOptionPane.showMessageDialog(ui, "Las huellas sí coinciden");
} else {
//De no ser así lo indica con un mensaje
JOptionPane.showMessageDialog(ui, "No corresponde la huella con "+nom, "Error", JOptionPane.ERROR_MESSAGE);
}
//Si no encuentra alguna huella correspondiente
//al nombre lo indica con un mensaje
} else {
JOptionPane.showMessageDialog(ui, "No existe el registro de "+nom, "Error", JOptionPane.ERROR_MESSAGE);
}
} catch (SQLException e) {
e.printStackTrace();
} catch (GrFingerJavaException e) {
e.printStackTrace();
}
}
Al realizar lo anterior es posible que necesites importar algunas clases como java.sql.ResultSet para que todo funcione correctamente.
Ahora solo se debe de agregar una llamada al método verificar() desde el botón de Verificar en la clase interfaz.PantallaPrincipal, para realizarlo correctamente se debe dar doble clic sobre el botón y posteriormente agregar el código dentro del método creado de tal manera que quede así...
private void btnVerificarActionPerformed(java.awt.event.ActionEvent evt) {
String nombre = JOptionPane.showInputDialog("Nombre a verificar:");
procedimientosSDK.verify(nombre);
}
Si corremos la aplicación tras realizar lo anterior podremos verificar la huella capturada actualmente contra otra en la base de datos y el sistema nos indicará si la huella coincide o no...
Hasta aquí le dejamos en esta parte, si le has entendido correctamente a la lógica del código no te será difícil crear el método de identificar(), si lo deseas, puedes esperar a la próxima entrega en la cual lo explicaré paso a paso.
¿Alguna duda o algo qué decir? Deja tu comentario. Saludox.
buenos dias eh estado siguiendo estos tutoriales para incluir un lector de huella digital por otra parte yo tengo poco programando en java y me gustaria saber cuadno publicas la parte donde hace la identificacion de l ahuella digital
ResponderBorrarHola, he seguido los pasos, pero me sale el siguiente error:
ResponderBorrarLicense not found or read error
esto paso despues que tuve que formatear el equipo, probe en otro pc y pasó lo mismo.
Desde ya muchas gracias
Qué tal,
ResponderBorrarEl error que mencionas es por que la licencia del sdk de griaule no está colocada en el directorio correcto, te sugiero que lo cheques y verifiques que se encuentre donde se menciona en la primera parte del tutorial.
saludox
Muchas gracias por tu respuesta, con respecto al tema, sigo con el mismo problema, he seguido al pie de la letra la primera parte del tutorial.
ResponderBorrarSaludos
Este comentario ha sido eliminado por el autor.
ResponderBorrarHola Monillo007,
ResponderBorrarEstoy leyedo todo el tutorial antes de empezar y queria consultarte, como es que se comportaria la busqueda si no se coloca el identificador previo de la persona? y hay 300,000 posibilidades? Cuanto podria demorar la busqueda?
Gracias por tu respuesta y el aporte,
Rocio.
Qué tal Rocio,
ResponderBorrarTe comento que de acuerdo a la información que Griaule proporciona, el SDK puede realizar hasta 35,000 comparaciones por segundo, por lo tanto, una búsqueda como la que comentas tardaría aproximadamente 8.5 segundos.
Recuerda que mucho tiene que ver el ancho de banda de la red (en caso de que se maneje de esta manera) y la velocidad del motor de base de datos.
Espero haberte ayudado. Saludox.
hola amigo que mas como estas espero que bien, la verda tu ejemplo me ha servido de mucho y he hecho maravillas con eso, solamente tengo una duda, como puedo hacer para que se haga una identificacion? que apenas la persona coloque el dedo lo busque en la base de datos?
ResponderBorrarTe felicito y agradezco tan simple y completo tutorial
ResponderBorrarJulio Berrios CHILE
Oye carnal yo tengo un proyecto que realizar pero la verdad ni se como empezarlo tambien es sobre el chequeo de entradas y salidas pero de docentes por medio de huella dactilar te agradeceria si me pasas el codigo para ver como empesarlo como veo que manejas java pues ojala me hagas ese favor de verdad te lo agradeceria mi mail es miclo1103@yahoo.com
ResponderBorrarPara la comparación que menciona Rocio, que sugieres hacer? una aplicación en la parte del servidor que este corriendo y cuando llegue un template lo compare¿? obvio es ilogico mandar el arreglo de 300 mil templates, por ancho de banda y la seguridad. Tienes algun desarrollo en la parte del server?
ResponderBorrarSaludos pp
Ppillo,
ResponderBorrarJustamente la solución tendría que ver con lo que mencionas, en mi caso, desarrollé un webservice que se encargara de realizar todo el trabajo pesado y solamente retornara si la huella coincide con la que busco o no. Como te imaginarás, mediante esta técnica se mejora considerablemente el rendimiento de la aplicación.
Saludox.
Hola Luis, sabras cuales son los eventos del lector?? esque no quiero crear un boton "identificar", quiero que el lector despues de haber tomado mi huella llame al metodo identificarPersona();
ResponderBorrarQué tal,
ResponderBorrarPara mayor referencia puedes consultar la documentación del SDK en la carpeta de instalación (...\Griaule\Fingerprint SDK Java 2007\doc\javadoc). De cualquier manera te digo que los métodos que te sirven son onFingerDown() y onFingerUp() para detectar cuando se coloca y retira un dedo del lector respectivamente.
Saludos.
Luis creo que ya encontre la solución para no crear un boton "identificar", mira hice lo siguiente:
ResponderBorrarpublic void onFingerUp(String idSensor) // evento que se genera al levantar el dedo del lector
{
identificarPersona();
}
en el metodo onFingerUp(String idsensor) mando llamar a identificarPersona();
no me ha mostrado ningun error hasta ahora. Saludos.
Saludos !!!!!
ResponderBorrarestoy utilizando un lector de huella SUPREMA, en esta linea me da error:
import com.suprema.ufe33.BioMiniJniSDK;
donde puedo conseguir este paquete??? porq no lo tengo instalado..
Agradezco su ayuda.!