Ir al contenido principal

Programación de un lector de huella digital en Java. Parte 5.

Después de una larga espera seguimos con el tutorial en su quinta parte (si no has leído las partes uno, dos, tres y cuatro te recomiendo que lo hagas antes de continuar). En este caso toca el turno a la identificación de personas por medio de su huella digital. Hasta el momento ya tenemos resueltas las funciones para guardar y verificar así que falta poco para culminar con las funciones básicas.
Recordemos que todos los procedimientos los estamos realizando en la clase procedimientos.Util así que vayamos a dicha clase y creamos un método de nombre identificarPersona() que no recibe argumentos de ningún tipo, en un principo quedará de la siguiente manera:
  /**
    * Identifica a una persona registrada por medio de su huella digital
    */
   public void identificarPersona(){
       
   } 
Ya que tenemos la definición del método debemos de brindarle un comportamiento pero para decirle qué hacer primero debemos entenderlo. Para identificar una persona se necesita tomar una muestra de la huella digital y posteriormente compararla con todas aquellas entre las cuales se encuentra la persona, en este caso, entre todas las huellas registradas, si encontramos un registro que coincida entonces tenemos a la persona que buscamos.
En código se traduce a lo siguiente:
Primero obtenemos todas las huellas de la base de datos...
ResultSet rsIdentificar = identificarStmt.executeQuery();
...posteriormente iteramos a través de todos los resultados...
while(rsIdentificar.next()){
...en cada iteración obtenemos la plantilla de la huella almacenada...
byte templateBuffer[] = rsIdentificar.getBytes("huehuella");
...y la creamos para posteriormente utilizarla...
Template referenceTemplate = new Template(templateBuffer);
...ya que tenemos la plantilla de la base de datos la comparamos con la actual almacenando el resultado de la comparación en una variable...
boolean coinciden = fingerprintSDK.verify(template,referenceTemplate);
...si coinciden hacemos lo pertinente y rompemos el ciclo de iteración y lo cerramos...
if (coinciden){                   
  ui.showImage(GrFingerJava.getBiometricImage(template, fingerprint, fingerprintSDK));                                  
  JOptionPane.showMessageDialog(ui, "La huella es de "+rsIdentificar.getString("huenombre"));
  return;
}

}
...si hemos buscado en todas las huellas y no se encuentra se lo indicamos al usuario...
 JOptionPane.showMessageDialog(ui, "No existe ningún registro que coincida con la huella.");
...y listo!
Al finalizar debemos de encerrar el código entre algunos try-catch para evitar errores al momento de compilar, el método completo queda así:
/**
    * verifica la huella digital actual contra otra en la base de datos
    */
   public void identificarPersona() {
       try {
           //Obtiene todas las huellas de la bd
           ResultSet rsIdentificar = identificarStmt.executeQuery();
           
           //Si se encuentra el nombre en la base de datos
           while(rsIdentificar.next()){
               //Lee la plantilla de la base de datos
               byte templateBuffer[] = rsIdentificar.getBytes("huehuella");
               //Crea una nueva plantilla
               Template referenceTemplate = new Template(templateBuffer);
               
               //compara las plantilas (actual vs bd)
               boolean coinciden = fingerprintSDK.verify(template,referenceTemplate);
               
               //Si encuentra correspondencia dibuja el mapa 
               //e indica el nombre de la persona que coincidió.
               if (coinciden){                   
                   ui.showImage(GrFingerJava.getBiometricImage(template, fingerprint, fingerprintSDK));                                  
                   JOptionPane.showMessageDialog(ui, "La huella es de "+rsIdentificar.getString("huenombre"));
                   return;
               }
               
           } 
           
           //Si no encuentra alguna huella que coincida lo indica con un mensaje
           JOptionPane.showMessageDialog(ui, "No existe ningún registro que coincida con la huella.");
               
       } catch (SQLException e) {
           e.printStackTrace();           
       } catch (GrFingerJavaException e) {
           e.printStackTrace();           
       }
   }
Posteriormente lo único que debemos hacer es mandarlo llamar desde el botón de 'Identificar' y listo! hemos terminado con las 3 funciones principales de un sistema de identificación de huellas digitales, solo necesitas adaptar estos métodos a tu aplicación y tendrás funcionalidad total.
El plan no es terminar con esta serie de tutoriales con este artículo sino ahondar en procedimientos un tanto más especializados como comparaciones realizadas directamente por el servidor (en aplicaciones cliente-servidor) para quitar tráfico a la red por medio de un servidor de aplicaciones, sin embargo, espero sus comentarios y opiniones al respecto, y si tienen alguna consulta dejen su correo para hacerles llegar mi respuesta lo antes posible ya que no he podido contestar los comentarios aquí directamente...

:::Actualización:::
A petición de algunos de ustedes, aquí les dejo una liga para descargar el proyecto en formato comprimido:

Descargar


****Actualización (08/08/2012)****
A petición de todos les dejo la lista de todos los artículos de este tutorial.

Tus comentarios y/o preguntas son bienvenidos.
Si el código te fue útil te invito a que me ayudes a difundirlo desde los botones sociales (Twitter, Facebook, Google+).
De igual manera puedes suscribirte al blog original feed  para que los nuevos artículos lleguen a tu bandeja de correo o lector de Feedsfavorito desde los enlaces del lado derecho de la página.

Comentarios

  1. Estimado Monillo:
    he seguido con mucho interes esta guia, y la agradezco profundamente, pero ruego que, por favor, puedas mandar un archivo zip o algo para probarlo en vivo, porque definitivamente Java es la solucion a nuestro problema, pero sigo sin poder hacer andar el compilador...sirve el jcreator para estos efectos? cualquier guia se agradece...
    Atte,
    un ignorate fan de Java

    ResponderBorrar
  2. Monillo
    Gracias por este tutorial, era lo que estaba buscando, me gusto mucho pq al fin encontre algo con java, estaba ya optando por solucion en .NET, pero te agradeceria si es posible los fuentes en un .zip, por alguna razon, no se que me falta pero no me ejecuta bien en NB.
    Gracias
    Att
    Un Java Fan

    ResponderBorrar
  3. Que tal Monillo..
    He seguido muy de cerca este tutorial y la verdad me saco de apuros. Te felicito por la aportacion a la comunidad de desarrolladores.
    Solo una pregunta, sabes si la libreria de griaule deja de funcionar a los 90 dias ??

    Me gustaria estar en contacto mas de cerca este es mi blog y mail http://omixisc.blogspot.com ofm.isc@gmail.com
    Bytes...

    ResponderBorrar
  4. Saludos monillo!!
    Estoy muy interesado en este tutorial, muy buenopor cierto, al igual que mis compañeros si puedes facilitar un zip, te lo agradeceria mucho estoy inmerso en un proyecto en java de este estilo y me ayudaria mucho tu aportacion, mi correo es s_alcu@hotmail.com Gracias!

    ResponderBorrar
  5. Gracias a todos por sus comentarios, les comento que ya subí el proyecto de NetBeans para que puedan descargarlo, chequen la parte final del artículo para obtener el vínculo.

    Saludox.

    ResponderBorrar
  6. muy buen aporte pero tengo dudas este programa hace la funcion de scanner como hacer para que tembien haga la funcion como lector y cada vez que quiera accesar a una carpeta me pida introducir la huella y que la corrobore no se si e entendido bien lo que hace el programa mi correo es jmorenolopez@hotmail.com

    ResponderBorrar
  7. quisiera saber si tienes este programa de detector de huellas desarrollado en .net si es asi me lo podrias mandar en .zip a jmorenolopez@hotmail.com

    gracias

    ResponderBorrar
  8. George,

    Primero que nada disculpa la tardanza en contestarte, te comento que no tengo el proyecto en .net, de hecho el fin de estos 5 tutoriales es que se aprenda y se entienda la programación como tal, no solamente compartir el proyecto para su descarga. Saludox.

    ResponderBorrar
  9. Hola buen dia

    He seguido tu guia (felicidades esta muy bien)y todo me funciona perfecto desde netbeans, pero cuando armo un jar y lo quiero ejecutar desde linea de comandos me envia un error donde me dice que no puede leer la licencia
    ¿Que puedo hacer para solucionar este error?

    Saludos y desde ya mil gracias por tu ayuda y atención

    ResponderBorrar
  10. Verifíca que las librerías de grfingerjava y mysql estén dentro de la carpeta de la última versión del jre de java (c:/archivos de programa/java/jreX.XX/lib/ext), si te sigue dando el error indícame tal cual lo que aparece en la consola para verificar exactamente de qué se trata.

    Saludox.

    ResponderBorrar
  11. Hola,

    Antes de nada quería felicitarte por la guía, un gran trabajo. En mi caso particular yo necesito algo más sencillo, sólo tengo que conectar el detector de huella digital a mi aplicación de login (realizada en java), para que cuando pase la huella se autentifique en la aplicación, es decir, no necesito mostrar la huella ni nada de eso, sólo que se autentifique, la idea es comprar el DigitalPersona 4000B que es el mismo que has utilizado tú, ¿crees que con la parte del paquete de procedimientos es sufiente?, ¿vés necesario que compre la SDK Gold/Premium que viene con el DigitalPersona?. Muchas gracias de antemano.

    Un Saludo

    Fernando

    ResponderBorrar
  12. Primero que todo gracias por el desarrollo de este proyecto, que ha sido de gran ayuda para nosotros.

    Te sugerimos cosas como:

    1- ¿Como es posible quitar la pantalla de licencia de griaule?, por acá hubo un conocido que lo hizo pero no ha querido colaborarnos con ese apunte.

    2- en nuestro caso el proyecto estamos trabajando la aplicación desde un "Java Desktop Application", ademas no estamos capturando la huella desde el frame principal (que si lo utilizamos como formulario de logeo) y el JFrame en el que estamos capturando la huella se abre despues, sin embargo cuando cerramos este jFrame(en el cual se encuentra implementado todo tu proyecto) y volvemos y le damos iniciar sesion (esto sin cerrar toda la aplicacion) y volvemos a logear y entrar al Jframe aparece un error al inicializar la captura (GrFingerJavaException) y ademas no capturar la huella.

    Esas son los dos únicas huellas digo comentarios que tenemos al respecto del proyecto, por lo demás esta EXCELENTE!!!

    nos gustaría estar en contacto con ustedes, si puedes agregame a tu correo, el mio es:
    umov@hotmail.com.

    gracias.

    ResponderBorrar
  13. BBBIIIIIEEENNNNN muchas gracias llevo un bune rato siguiendo tutoriales y arreglandomelas y al final casi temrino pero me da errores, espero que con el ejemplo pueda completar mi proyecto gracias

    ResponderBorrar
  14. Hola soy Belen te habia dejado un comentario en la parte 1 porque no habia visto la continuación de tu artículo que en verdad es muy bueno, te felicito!!, ok, ya probe el ejemplo y me da este error To run this application from the command line without Ant, try:
    java -jar "C:\Users\princesa\Desktop\lector\EjemploLectorHuellas\EjemploLectorHuellas\dist\EjemploLectorHuellas.jar"
    y por cierto lo voy a intentar para trabajando con servlets luego te digo como me fue te agradezco y de nuevo felicidades

    ResponderBorrar
  15. Saludos amigo, gracias a tu estupendo manual logramos realizar el registro, verificacion e identificacion de huellas con el lector Nigten Hamster II.
    Tengo una duda, lo que pasa es que por ahora estamos trabajando con el SDK gratuito de Griaule, tenemos pensado compralo porque es para uso de una empresa. El problema es que por ahora cada que ejecutamos la aplicacion para el registro de huellas, puede que la aplicacion se ejecute o no. El numero maximo de veces que lo ejecutamos para que funcionara fueron 24 veces,osea que 24 veces la aplicacion no se abrio, aveces la aplicacion se abre a la primera, pero no siempre. Me gustaria saber si al comprar el SDK esto dejara de pasar.
    PD:No hemos probado con tu codigo.
    Gracias por tu ayuda

    ResponderBorrar
  16. Muchas gracias por tu aporte,
    te pondre de referencia. Ahora, mas bien, tengo una consulta. Estoy aplicando un sistema de seguridad remoto y estaba pensando en usar biometria como metodo de acceso. Tu crees q sea posible mediante un concentrador VPN SSL acceder a la VPN y asi poder entrar al aplicativo, previamente teniendo la lectora de huella dactilar??. Te envio mis datos para poder enviarte el grafico de mi propuesta.

    Saludos,

    Jorge G

    ResponderBorrar
  17. Mis datos son: guardiajgd@hotmail.com

    ResponderBorrar
  18. Oye muchisimas gracias por este tutorial, funciona perfectamente con mi scanner Upek
    Lo unico malo es que el Griaule es de paga, debería haber un desarrollo de SDK libre, los que anduve buscando no le llegaron a lo que hace Griaule, pero es muy buena iniciativa.
    Gracias por el articulo, ahora podré sacar adelante mi proyecto.

    ResponderBorrar
  19. me ha dejado fascinado todo este tutorial mi amigo, te felicito. note que lo realicaste en aprox. 2 meses. yo tengo planeado realizar un sistema de control de asistencia, y un bonche de informacion tan detallada y precisa como la de tus blogs me da los animos suficientes para realizarlo. gracias y sigue asi

    saludos

    ResponderBorrar
  20. me puedes pasar el Link para descargar todo el codigo de tu aplicacion. de antemano gracias.
    este es mi correo ck0z@hotmail.com

    ResponderBorrar
  21. HOLA SALUDOS QUISIERA SABER SI ME DUEDES AYUDAR CON LA APLICACION QUE ESTA EN TU BLOG YA LA TERMINE PERO CUANDO LA EJECUTO SALE EL SIGUIENTE ERROR
    Exception in thread "main" java.lang.UnsatisfiedLinkError: no grfingerjava in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1028)
    at com.griaule.grfingerjava.GrFingerJavaNative.loadLibrary(GrFingerJavaNative.java:46)
    at com.griaule.grfingerjava.GrFingerJavaNative.(GrFingerJavaNative.java:28)
    at com.griaule.grfingerjava.GrFingerJava.setLicenseDirectory(GrFingerJava.java:96)
    at procedimientos.Util.setFingerprintSDKNativeDirectory(Util.java:106)
    at interfaz.PantallaPrincipal.main(PantallaPrincipal.java:238)
    Java Result: 1
    QUISIERA SABER SI ME FALTA ALGUNA LIBRERIA YA REVISE LOS PASOS DE LA PRIMERA PARTE

    ResponderBorrar
  22. Hola que tal! me puedes pasar el Link para descargar todo el codigo de tu aplicacion? te anticipo que no soy programador java, pero lo intento, nada mas que me lo encargaron en mi trabajo y al principio lo hice con visual basic y me funciona muy bien, de hecho lo tengo con MySql, pero el nuevo Jefe lo quiere implementar en Java, de antemano gracias.
    este es mi correo gedworl@gmail.com

    ResponderBorrar
  23. Para los qe no les funciona el enlace por alguna razon es esta.

    http://www.mediafire.com/?5fyytuuidny

    ResponderBorrar
  24. hola, interesante el desarrollo de esta aplicacion, pero me resulta una pregunta y no se si ya te la han hecho, pero como puedo adaptar este tipo de desarrollo a uno que esta ya creado en php y lo que necesito es incorporarle la opcion de lectura de huellas y verificacion en la base de datos??

    agradeceria tu respuesta--

    ResponderBorrar
  25. Qué tal,

    Es posible integrar un módulo de este tipo en una aplicación php por medio de un applet.

    ResponderBorrar
  26. Hola, primero que todo te felicito por este excelente tuto, aun no lo implemento pero lo he leído todo y esta muy claro, además que las imágenes y las secciones de código están muy detalladas, pero te quiero hacer una pregunta, veo que en el método verify(String nom) se hace la consulta a la BD filtrando el registro por el nombre y al obtenerlo se compara el mapa de la huella, con lo cual me imagino que sera muy eficiente la búsqueda, pero mi pregunta recae en el escenario en el cual no se solicite por ejemplo el nombre sino que solo con la huella se realice la búsqueda, como me lo imagino seria realizar una búsqueda de todas las huellas e iterar el resultado y allí realizar una comparación una a una de cada huella de la BD contra la que buscamos, pero esto a simple vista es costoso en tiempo y recursos si pensamos que se tengan muchos usuarios registrados en la tabla ( no se 1000 o mas pensando en grande ), ahora bajo este escenario que te planteo ves una solución que sea mejor que la que pienso yo? es que la verdad aunque esa opción es la mas básica no veo muchas alternativas.

    Te repito muchas gracias.

    ResponderBorrar
  27. Hola,

    he revisado el tutorial y me ha parecido muy bueno, la información es verdaderamente útil. Veo que entre las preguntas que te hicieron está la integración a un programa php, yo trabajo en lenguaje java pero sobre plataformas Web, y tengo precisamente esa idea, como puedo hacer funcionar el lector pero en entorno web?, ya me lo había imaginado con una applet pero me preocupa la idea de que salga un applet muy pesado, y además como superar el tema de permisos para acceder los drivers que se necesitan, me gustaría ponerme en contacto contigo para llevarlo a cabo como proyecto open source.

    ResponderBorrar
  28. hola antes que nada estube le yendo el post y megusto por que voy a realizar un proyecto parecido pero necesito descargar tu proyecto para que le pueda enter mejor a un que lo que tu dices esta muy claro lo que me refiero es verlo como trabaja y no lo puedo descargar de link
    megustaria que lo mandaras a mi correo,
    mi correo es pelon_12luis@hotmail.com por favor lo necesito te lo agradeceria mucho, y eres muy bueno programando felecidades.

    ResponderBorrar
  29. hola ke tal amigo...recien acabo de ver tu blog y me parecio super interesante por la manera en que explicas este ejemplo...de verdad muchas gracias m sirvio un buen...

    aaa y para los ke no han podido descargar el ejemplo comprimido...este es el link

    http://www.mediafire.com/?5fyytuuidny

    ResponderBorrar
  30. aMIGO MUCHISIMAS GRACIAS POR TU APORTE... QUISIERA PEDIRTE UN GRANDE FAAVOR... AL TRATAR DE CORRER EL PROGRAMA ME SALE UN EROR DE UNA DLL pthreadVC2.dll Y NO SE COMO REPARLO... TE AGRADECERIA SI PUDIERAS COLABORARME... DE VERDAD LO NECESITO... MUCHAS GRACIAS

    ResponderBorrar
  31. Hola a todos , quiero agradecer a Monillo007 por esta excelente guía. Esta muy bien explicada y clara de entender.

    Estuve leyendo la parte de Identificar a una persona y en el ejemplo se plantea que hay que traer todas las huellas e ir comprobando una a una para saber saber que persona es. Aparte de esta forma de que otra podemos identificar una persona .. no se algo como un WHERE en la BD ; ya que si los datos en la tabla son muy grandes ( 10.000.0000.000)registros creo que seria un proceso costoso y lento.

    Muchas gracias por sus opiniones sobre esta duda.

    "Para identificar una persona se necesita tomar una muestra de la huella digital y posteriormente compararla con todas aquellas entre las cuales se encuentra la persona, en este caso, entre todas las huellas registradas, si encontramos un registro que coincida entonces tenemos a la persona que buscamos."

    gaso

    ResponderBorrar
  32. ola estoy com un probrema com las importaciones que se ocupan en el programa no me funciona unas importaciones son las siguentes import com.griaule.grfingerjava.FingerprintImage;
    import com.griaule.grfingerjava.GrFingerJava;
    import com.griaule.grfingerjava.GrFingerJavaException;
    import com.griaule.grfingerjava.IFingerEventListener;
    import com.griaule.grfingerjava.IImageEventListener;
    import com.griaule.grfingerjava.IStatusEventListener;
    import com.griaule.grfingerjava.MatchingContext;
    import com.griaule.grfingerjava.Template;

    me dice el netbeans que no existe tal importaciones

    si me pueden ayudar xfa.
    gracia.

    ResponderBorrar
  33. HOLA HE SEGUIDO TU PROYECTO, YO TRABAJO EN GOBIERNO DEL ESTADO DE MÉXICO COMO DESARROLDOR Y HE TRATADO DE HECHAR ANDAR ALGO SIMILAR PERO TENGO UN PROBLEMA PARA COMPARAR LAS HUELLAS ¿PRODRIAS COLGAR EL PROYECTO PARA QUE VEA LA RUTINA DE COMPARACIÓN CON LA BD? YA QUE EN DONDE LA TENIAS YA NO ESTA DISPONOBLE.

    TE MANDO MIS CORREOS
    abo270381@hotmail.com
    gabriel.correa@edomex.gob.mx

    DE ANTEMANO GRACIAS!!!!!!!

    ResponderBorrar
  34. alguien me puede pasar el link de la 4ta parte porque no la encuentro porfavor se los agradeceria mucho y si acaso tienen el archivo de descarga tambien porque no me permite descargalo

    ResponderBorrar
  35. Qué tal,

    Al inicio de este artículo están los links a todas las demás partes.

    Un saludo.

    ResponderBorrar
  36. Hola estimado amigo...

    He probado su proyecto que esta espectacular, pero al momento de compilar para LANZARLO... me da el siguiente ERROR... :

    Exception in thread "main" java.lang.UnsatisfiedLinkError: no grfingerjava in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1028)
    at com.griaule.grfingerjava.GrFingerJavaNative.loadLibrary(GrFingerJavaNative.java:46)
    at com.griaule.grfingerjava.GrFingerJavaNative.(GrFingerJavaNative.java:28)
    at com.griaule.grfingerjava.GrFingerJava.setLicenseDirectory(GrFingerJava.java:96)
    at procedimientos.Util.setFingerprintSDKNativeDirectory(Util.java:106)
    at interfaz.PantallaPrincipal.main(PantallaPrincipal.java:238)
    Java Result: 1
    QUISIERA SABER SI ME FALTA ALGUNA LIBRERIA YA REVISE LOS PASOS DE LA PRIMERA PARTE y NO LOGRE CONSEGUIR NADA.

    MUCHAS GRACIAS POR TU AYUDA...

    ResponderBorrar
  37. Qué tal,

    Te comento que la excepción es por que el programa no encuentra los archivos dll en el registro del sistema operativo, verifica que dichos archivos (mencionados en la parte 1) se encuentren en la carpeta c:\windows\system32\ en caso de Xp, para otros sistemas operativos habría que verificar la ruta.

    Un saludo.

    ResponderBorrar
  38. Muchas gracias ya lo encontre de casualidad todavia tendras el proyecto comprimdo?

    mi correo es iga_3@hotmail.com

    Saludos!

    ResponderBorrar
  39. Ya lo hize jalar y todo pero no me enciende el lector de huella ¬¬ intente con dos distintos modelos y si me funcionan en el sample del griaule pero en el proyecto nomas no prende =/

    ResponderBorrar
  40. Buenas amigo, muy buen tutorial, actualmente me encuentro buscando alternativas para echar a andar el lector eikon, buscando y buscando me encontre con esta pagina, me he descargado tu proyecto de netbeans pero al generar el jar y ejecutarlo, que el lo primero que debo hacer al iniciar el programa? Lo pregunto porque las lineas verdes a que haces referencia no me aparecen, por otro lado si le doy al boton guardar me da una excepcion nullpointerexception en el boton guardar.

    Agradeceria cualquier ayuda de tu parte, mi mail es magroberth@gmail.com

    ResponderBorrar
  41. Hola muy bueno el tutorial, pero no de deja descargar, depronto un mirror para descargarlo

    gracias

    ResponderBorrar
  42. Hola Monillo:
    Como muchos aqui hemos venido siguiendo los tutoriales, y en lo personal me parece un graqn logro para los que estamos en esta area y de seguro que nos ayudara en gran medida.
    Al correr el codigo que nos dejaste yo tuve unos problemillas, en algunos casos no me corria por eso me dirijo hacia para pedirte que talvez me pudieras enviar el codigo a mi correo eddy_usb2008@hotmail.com.
    De antemano te agradezco por este gran tutorial.
    Atte: Edson.

    ResponderBorrar
  43. Aquí el enlace:

    http://www.mediafire.com/?5fyytuuidny

    Saludox!

    ResponderBorrar
  44. Buenisimo, muy claro y sencillo de explicar... anuque yo creo que su elaboracion tuvo su grado de dificultad.. muy bien! :)

    ResponderBorrar
  45. Hola muchas gracias por el tuto , quisiera saber si hay alguna manera de hacer las pruebas sin necesitadad de tener un dispositio , podria hacerce con el lector que tiene el mismo pc?

    ResponderBorrar
  46. Qué tal,

    Es probable que funcione, revisa la lista de lectores compatibles directamente en www.griaule.com.

    Saludos.

    ResponderBorrar
  47. hola muy bueno tu tutorial pero a mi me da un problema que no eh podido resolver a la hora de identificar

    com.griaule.grfingerjava.GrFingerJavaException: Unknown error
    at com.griaule.grfingerjava.MatchingContext.verify(MatchingContext.java:338)
    at procedimientos.Util.identificarPersona(Util.java:234)
    at interfaz.PantallaPrincipal.btnIdentificarActionPerformed(PantallaPrincipal.java:265)
    at interfaz.PantallaPrincipal.access$400(PantallaPrincipal.java:28)
    at interfaz.PantallaPrincipal$4.actionPerformed(PantallaPrincipal.java:165)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6267)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6032)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4630)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

    ResponderBorrar
  48. Qué tal,

    Qué sistema operativo, versión del SDK y lector tienes?

    Saludos.

    ResponderBorrar
  49. hola el sistema operativo es windows 7, sdk 2009 y lector es digital persona 4000b

    ResponderBorrar
  50. Qué tal Hector,

    Te comento que este tutorial está basado en la versión 2007 del SDK, el 2009 es bastante parecido pero tiene sus diferencias, para verificar el por qué de tu error será necesario (por lo pronto) que te pongas en contacto con el soporte de Griaule directamente o en su defecto que utilices el 2007 con otro lector ya que el que utilizas tiene problemas de compatibilidad.

    Saludos.

    ResponderBorrar
  51. y tambien ya hice la prueba con el sdk 2007. como te digo si me deja guardar y verificar pero a la hora de identificar me da ese error

    ResponderBorrar
  52. Te recomiendo entonces probar con el proyecto que se puede descargar desde el final del artículo para descartar cualquier posibilidad, si corre sin problemas verifica las diferencias entre ambos proyectos.

    Igual pruebas y me dices cómo te fue.

    ResponderBorrar
  53. Hola Luis he tenido inconvenientes para descargar la aplicacion y probarla ya que he tratado el paso a paso y no he podido lograr su buen funcionamiento te agradezco si me puedes colaborar para poder hacer efectiva la descarga.

    ResponderBorrar
  54. Aquí el link:
    http://www.mediafire.com/?5fyytuuidny

    Si aún no puedes descargarlo deja tu correo y te lo mando.

    Saludos.

    ResponderBorrar
  55. Esta parte de Aqui me salen error en tdo caso si tienes la libreriaz podriaz subirlo para descargarlos


    import com.griaule.grfingerjava.FingerprintImage;
    import com.griaule.grfingerjava.GrFingerJava;
    import com.griaule.grfingerjava.GrFingerJavaException;
    import com.griaule.grfingerjava.IFingerEventListener;
    import com.griaule.grfingerjava.IImageEventListener;
    import com.griaule.grfingerjava.IStatusEventListener;
    import com.griaule.grfingerjava.MatchingContext;
    import com.griaule.grfingerjava.Template;

    ResponderBorrar
  56. Qué tal, al final del artículo tienes la liga para la descarga.

    Saludos.

    ResponderBorrar
  57. UNA PREGUNATA... SERA QUE SE PUEDE UTILIZAR CON EL LECTOR DE HUELLA DIGITAL DE MI LAPTOP... ES UNA HP....

    ResponderBorrar
  58. Qué tal,

    Existe un listado de lectores compatibles directamente en la página del fabricante www.griaule.com.

    Saludos.

    ResponderBorrar
  59. muchas gracias por este aporte, en serio y muy bacano el blog

    saludos y sigue asi

    ResponderBorrar
  60. Primero que todo muchas gracias por el tutorial de "Programación de un lector de huella digital en Java" me funciono perfectamente con el lector óptico Microsoft. Ahora lo quise trabajar con un lector de sensor capacitivo, Zvetco P6000 que se encuentra en la lista de lectores compatibles de Griaule, el problema que se me presenta es que cuando coloco por primera vez la huella me la reconoce muy normal, sin embargo al intentar poner otra huella ya sea para realizar cualquier acción no la lee ni la reconoce sólo se queda con la primera imagen que tomó. No se a que se pueda deber este problema pero agradecería cualquier colaboración que me pudieras brindar.

    ResponderBorrar
  61. saludos amigo gracias por el tutorial de "Programación de un lector de huella digital en Java" me funciono perfectamente pero me gustaria que me ayudaras o me orientaras en como cambiar el estilo a la huella que se dibuja en el panel .. colores

    ResponderBorrar
  62. HOLA SE ME HACE UN TANTO COMPLICADO AUNQUE ESTA MUY FACIL LA GUIA NO ME CORRE YA INTENTE DESCARGAR EL FINGERINSTALLER2007 DESDE TUS ENLACES PERO YA TODOS CASI ESTAN FUERA EN SU LUGAR DESCARGUE EL 2009 E HICE TODO DEACUERDO A LA ESTRUCTURAS PERO AL REEDIRECCIONAR LAS LIBRERIA YA NO ME APARECEN CIERTAS CARPETAS COMO LA EXT CREO QUE POR ALLI ES LO QUE ME ESTA CAUSANDO EL PROBLEMA OJALA Y PUEDAS RESUBIR TU PROYECTO COMPLETO PAR QUE TRATAR DE CORRERLO GRACIAS

    ResponderBorrar
  63. Qué tal,

    Para cambiar los colores se debe utilizar el método setBiometricImageColors(), la información de su uso se localiza directamente en el javadoc del SDK de Griaule (usualmente en C:\Program Files\Griaule\Fingerprint SDK Java 2007\doc\javadoc).

    Para descargar el proyecto completo puedes ir a http://830d9902.tinylinks.co. Te recomiendo utilizar el SDK 2007 ya que es el que se utilizó para este tutorial y no se tuvo ningún problema. Puedes descargarlo desde el siguiente enlace:

    http://min.us/mvfrHo#1o

    Saludos.

    ResponderBorrar
  64. Hola, quisiera saber si hay alguna forma de calcular el tiempo que tarda en reconocer la huella desde que se pone el dedo en el sensor. Había pensado en definirlo en el OnFingerDown y/o OnFingerUp pero no estoy segura de como sería.

    Gracias, Johana

    ResponderBorrar
  65. Qué tal Johana,

    He revisado el SDK y al parecer no hay un método que lo calcule tal cual, por lo cual tendrías que hacerlo manualmente mediante Hilos (aquí un artículo al respecto).

    Otra opción sería que en el método verificar iniciaras guardando la hora (con segundos y milisegundos) en que comienza el proceso y al identificar la huella hicieras el cálculo del tiempo que transcurrió entre el inicio y el fin del proceso.

    Espero haberte dado una idea :). Saludos.

    ResponderBorrar
  66. Gracias por la idea estoy mirando como resolverlo porque necesito calcular el tiempo que pasa desde que pongo el dedo en el lector hasta que se ve la imagen en la aplicación con el template y todo. Johana

    ResponderBorrar
  67. Buenas noches, mira quería preguntar como podría volver a cargar una plantilla que tenga en la base de datos a la aplicación porque tengo una base de datos muy grande y no puedo contar con las personas registradas para que vuelvan a poner su huella e identificarlas. Necesito simular que se puso la huella así no sea toda la imagen lo que se muestre. Muchas gracias. Karen

    ResponderBorrar
  68. saludos luis navarro tengo este codigo pero nose como implementarlo me puede ayudar lo saque de aqui
    http://lisbioid.googlecode.com/svn-history/r6/trunk/Biometrico/src/Controlador/Main.java


    // Sets the colors of biometric display
    public void setBiometricDisplayColors(Color minutiaeColor,
    Color minutiaeMatchColor, Color segmentColor,
    Color segmentMatchColor, Color directionColor,
    Color directionMatchColor) {

    try {
    // set new colors for BiometricDisplay
    GrFingerJava.setBiometricImageColors(minutiaeColor,
    minutiaeMatchColor, segmentColor, segmentMatchColor,
    directionColor, directionMatchColor);
    } catch (GrFingerJavaException e) {
    // write error to log
    //ui.writeLog(e.toString());
    }

    }

    ResponderBorrar
  69. Saludos Luis navarro e estado investigando para cambiar el estilo y es sobre grafico pero de eso no se mucho pude modificar esta linea 1 por la linea 2 y me muestra la huella pero en negro me podrias ayudar como asignarle otro colo saludos te agrecedeceria ante mano..
    //Se dibuja la imagen
    1 // g.drawImage(fingerprintImage, transX, transY, width, height, null);


    2 boolean drawImage = g.drawImage(fingerprint, transX, transY, width, height, Color.blue, nombre);

    ResponderBorrar
  70. hola monillo007, como puedo resolver este error, segui los pasos al pie de la letra, utilizo las herramientas que manejaste en el tutorial, pero no entiendo por que sale este error
    com.griaule.grfingerjava.GrFingerJavaException: License not found or read error
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:60)
    at com.griaule.grfingerjava.MatchingContext.(MatchingContext.java:103)
    at procedimientos.Util.inicializarCaptura(Util.java:61)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:41)
    at ejemplolectorhuellas.Main.main(Main.java:25)
    Java Result: 1

    ResponderBorrar
  71. Qué tal,

    El error se debe a que no localiza el archivo de licencia que necesita para ejecutarse, verifica que lo indicado en la parte 1 del tutorial se haya realizado completa y correctamente.

    Saludos.

    ResponderBorrar
  72. Hola monillo puedes volver a subir el proyecto en formato comprimido? esque sale borrado!

    ResponderBorrar
  73. buenos aportes eh, estoy probando con los colores... Mi pregunta va si se puede manipular las luces con griaule del hardware, por ejemplo del nitgen hamster ii, y si no como podria manipular para este hardware... espero q alguno me responda... Ah si corre muy bien con el SDK2009, por lo menos no tengo problemas... haber como me ira luego... espero una respuesta gracias...

    ResponderBorrar
  74. Disculpa puedes resubir tu proyecto? El link esta caido. Saludos!!!

    ResponderBorrar
  75. Hola, excelente tuto :).

    Todo muy bien explicado como para no preguntar xD pero aquí voy :P.

    ¿Cómo haría para que la imagen (de la huella) me muestre en otra ventana sin iniciar una nueva instancia de fingerprint?

    Saludos.

    Pd. Todo funciona muy bien.

    ResponderBorrar
  76. Funciona muy bien pero pasa muy seguido que identica una huella que no corresponde, ¿ha alguien más le sucede lo mismo?.

    ResponderBorrar
  77. Hola a tos tengo un lector de Biomini Suprema y el SDK no lo Reconose si alguien me puede ayudar a resulver este pequeño proble se lo agradesco de antemano

    ResponderBorrar
  78. Mi hermano muchas gracias, que Dios te siga dando conocimiento, muy bien explicado y de facil comprension, de verdad gracias.
    Isaac P. B.

    Solo una pregunta busque la liga para descargar el proyecto, pero no lo encontre, porfa me lo podrias pasar, ya sea que me respondas por aca o si me hace el favor de enviarmelo a mi correo, de antemano muchas muchas gracias.
    emails: cibereternet@hotmail.com, techno-cyber@hotmail.com

    ResponderBorrar
  79. Hola Luis, de casualidad sabes como puedo comprar la licencia???, esque me meti a la pagina y vi varios sdk, pero no vi el que es compatible con java, de antemano gracias, saludos.

    ResponderBorrar
  80. Envíame un correo a monillo007@gmail.com para hacerte llegar la información. Saludos.

    ResponderBorrar
  81. gracias Luis, excelente tuto ....yo tengo 10 licencias pero para el sdk de escritorio ("Fingerprint SDK 2007) y aunque hay una carpeta de java en "samples" no me funciona.

    será q estoy haciendo algo mal o es por q tengo que adquirir por separado la el sdk JAVA?

    (por cierto captcha mas complicado)

    ResponderBorrar
  82. Hola que tal mi estimado Luis Navarro me parese mas que excelente tu tutorial ya que nos ayudas a varios con este gran aporte de programacion.
    Te comento que empeze con este proyecto y segui los pasos que has realizado hasta ahorita pero al momento de ejecutarlo me sale el siguiente error:
    ===========================================================
    ========= GRIAULE BIOMETRICS FINGERPRINT SDK 2009 =========
    ========= =========
    ========= TRIAL VERSION =========
    ========= 30-Day Evaluation =========
    ========= =========
    ========= Buy licenses at =========
    ========= www.griaulebiometrics.com =========
    ========= This trial license expired =========
    ========= 125 days ago =========
    ===========================================================
    com.griaule.grfingerjava.GrFingerJavaException: Unknown error
    at com.griaule.grfingerjava.MatchingContext.createContext(MatchingContext.java:95)
    at com.griaule.grfingerjava.MatchingContext.(MatchingContext.java:138)
    at procedimientos.Util.inicializarCaptura(Util.java:34)
    at interfaz.PantallaPrincipal.(PantallaPrincipal.java:32)
    at interfaz.PantallaPrincipal.main(PantallaPrincipal.java:184)
    Java Result: 1
    si me pudieras ayudar te lo agradeseria muchisisismo saludos desde Zacatecas mexico

    ResponderBorrar
  83. Hola.. muchas gracias por tu aporte... solamente que he estado trabajando con el SDK 2009 y existe problemas cuando intento correr el programa y el 2007 que mencionas no lo encuentro por ningun lado... me podrias decir donde descargar el 2007 o mandarmelo porfavor?? raul.lerma3@gmail.com
    Muchas Gracias...

    ResponderBorrar
  84. Por que cuando mando a llamar el frame donde se lee la huella desde otro frame(un menu principal) me manda el error de "com.griaule.grfingerjava.GrFingerJavaException: License not found or read error", pero cuando lo corro directamente me funciona bien.

    ResponderBorrar
  85. amigo me puedes mandar a mi correo el fingerprint sdk java 2007 por favor juanvm7910@hotmail.com o juanvama7910@gmail.com

    ResponderBorrar
  86. saludos amigo me puede pasar un link para descargar el fingerprint sdk java 2007 a mi correo es jamith.m@hotmail.com o ha este mercadojamith@gmail.com

    ResponderBorrar
  87. excelente tutorial 10/10

    ResponderBorrar
  88. Hola me interesa mucho, al final dice que es un formato comprimido, me lo puedes mandar a mi correo libra_gemelo18@live.com.mx es que lo estube checando y no salen algunas imagenes!!

    ResponderBorrar
  89. El archivo ya no esta podrías subirlo nuevamente, gracias

    ResponderBorrar
  90. Si, por favor sube el proyecto nuevamente es que ya no existe, si puedes en mega o por otro servidor, gracias de antemano.

    ResponderBorrar
  91. Que buen tutorial solo que no eh podido compilar me salen errores me gustaria que pusieras nuevamente el link ya que quise bajar el zip pero no me deja, gracias

    ResponderBorrar
  92. hola monillo007 de casualidad podrias subir la base para probar el ejemplo, por que nuestro virdi foh01 no hace nada cuando colocamos el dedo en el lector

    ResponderBorrar
  93. aL FINAL ME SALE ERROR ME PUEDES AYUDAR

    import com.griaule.grfingerjava.FingerprintImage;
    import com.griaule.grfingerjava.GrFingerJava;
    import com.griaule.grfingerjava.GrFingerJavaException;
    import com.griaule.grfingerjava.IFingerEventListener;
    import com.griaule.grfingerjava.IImageEventListener;
    import com.griaule.grfingerjava.IStatusEventListener;
    import com.griaule.grfingerjava.MatchingContext;
    import com.griaule.grfingerjava.Template;

    ResponderBorrar
  94. todas estas librerias pueden ser usadas tambien en eclipse rodrirchz@gmail.com

    ResponderBorrar
  95. Alguien tiene el codigo o el proyecto de netbeans lo corro y no me funciona!! para nada!!! mi correo ronyargueta@yahoo.es

    ResponderBorrar
  96. Esta caido el link de descarga...¡¡

    ResponderBorrar
  97. Porfavor Alguien Puede enviarme el archivo ? el proyecto ? algo en un rar porfavor ? gracias de antemano
    master_guaja@hotmail.com
    porfavor

    ResponderBorrar
  98. Buenas por favor si alguien que dispone del proyecto o los fuentes si podria enviarmelo, a mi email mikelquevedo@gmail.com

    ResponderBorrar
  99. Hola monillo podrías volver a poner el archivo ya que el link esta caído y no se pude descargar. gracias.

    ResponderBorrar
  100. Para los que tienen problemas en descargar del link, este es el enlace directo:
    http://www.mediafire.com/file/5fyytuuidny/EjemploLectorHuellas.rar
    Me ayudó muchísimo éste proyecto para un proyecto que hice. Lo máximo.

    ResponderBorrar

Publicar un comentario

Este es un espacio abierto, puedes escribir lo que gustes respetando los siguientes puntos:

1.- Lo que escribas esté relacionado con el post, si gustas contactarme puedes hacerlo aqui.

2.- Todo es cuestionable, aunque ten en cuenta que existen formas de hacerlo, evita las agresiones y revisa tu lenguaje antes de publicar un comentario.

3.- Siempre hay tres verdades: tu verdad, mi verdad y la verdad, por lo que opiniones diferentes no necesariamente son equivocadas.

4.- Los comentarios son una forma de discusión abierta, por lo que al publicar uno, implícitamente entras a una discusión, con todo lo que esto representa.

5. Me reservo el derecho de eliminar comentarios que no respeten las condiciones mencionadas anteriormente.

Toma en cuenta que puedes utilizar emoticones en tu comentario, para ver una lista de los disponibles da clic en este enlace.

Entradas más populares de este blog

3 sencillos pasos para tramitar la ayuda por desempleo de la AFORE

¿Tienes dinero ahorrado en tu AFORE y en este momento no estás trabajando o estás trabajando pero no tienes seguro social? Si respondiste sí a la pregunta anterior entonces hay una buena noticia para ti: puedes retirar una parte del dinero que tienes ahorrado. Y lo mejor, es muy sencillo. En este artículo te diré paso a paso qué hacer para obtener ese dinero, sin tecnicismos legales ni nada por el estilo, simple y sencillamente lo que necesitas saber. Paso Número 1: Obtener los últimos 2 estados de cuenta de tu Afore Esto en la mayoría de los casos es sumamente sencillo ya que dichos estados de cuenta llegan directamente al domicilio del ahorrador, si este es tu caso puedes saltar lo restante en este punto y continuar con el paso número 2, en caso contrario sigue leyendo… Si no tienes tus estados de cuenta debes ponerte en contacto con la empresa encargada de administrar tu ahorro para que te los proporcione, normalmente te van a pedir una identificación oficial, comprobante de

Conectar una base de datos en MySQL con NetBeans

NetBeans es una plataforma para el desarrollo de aplicaciones de escritorio usando Java y a un Entorno integrado de desarrollo (IDE) desarrollado usando la Plataforma NetBeans. Si eres un programador y desarrollas tus aplicaciones en Java seguramente necesitarás conectar una base de datos tipo MySQL a este entorno algún día, bueno, si lo necesitas ahora, he aquí una explicación paso a paso de cómo conectar ambas herramientas.

4 extraordinarias aplicaciones espía para Android

Le andas haciendo al James Bond y necesitas grabar video, voz o tomar fotos desde tu dispositivo Android sin ser notado? Aquí 4 excelentes aplicaciones que facilitarán tus hazañas de 007 en menos de lo que canta un gallo.

c606 c6nf5g4r6 e3 tec3ad6 [Como configurar el teclado]

¿Problemas al escribir con el teclado? ¿Tratas de escribir la letra ‘o’ y sale el número ‘6’ o algo por el estilo? La solución puede ser más simple de lo que parece. La solución a tu problema tras el salto...

Conexión, consulta y ejecución de sentencias en MySQL con Java

Anteriormente escribí este mismo artículo pero para bases de datos en Oracle . En este artículo prácticamente me copio y pego para explicar paso a paso cómo realizar la conexión a MySQL en Java, así como la forma de realizar consultas a los registros existentes y ejecutar sentencias de inserción, borrado y actualización de datos. Al final del artículo tendremos una clase que encapsulará todos los procedimientos necesarios para trabajar con la base de datos.