Necesito obtener el conteo de teclas presionadas y click en todo el sistema. Esto debe de poder realizarlo cada cierto tiempo, es decir que durante un periodo de tiempo cuento las teclas presionadas y clicks realizados y luego inicializo el contador.
Estoy utilizando Jnativehook pero no logro que la variable del contador se actulice, es decir que si hago un system.out.println de public void nativeKeyPressed(NativeKeyEvent e) me muestra el conteo pero cuando intento acceder a la variable contador en el main me muestra 0.
Aqui dejo la clase que estoy utilizando para ver si alguien me puede ayudar.
Código Java:
Ver original
package org.systrix.timetracker.resources; import java.util.Timer; import java.util.TimerTask; import org.jnativehook.GlobalScreen; import org.jnativehook.NativeHookException; import org.jnativehook.keyboard.NativeKeyEvent; import org.jnativehook.keyboard.NativeKeyListener; import org.jnativehook.mouse.NativeMouseEvent; import org.jnativehook.mouse.NativeMouseListener; /*Primero se implementará la interfaz que contiene los métodos necesarios para el * manejo de las teclas según su comportamiento */ public class MouseKeyListener implements NativeKeyListener, NativeMouseListener{ /** * */ public int contadorclicks; public int contadorkeys; //Se inicia la rutina de inicialización de los componentes de la librería JNativeHook try { GlobalScreen.registerNativeHook(); GlobalScreen.addNativeKeyListener(new MouseKeyListener()); MouseKeyListener aux = new MouseKeyListener(); aux.countKeysPress(20000,aux); e.printStackTrace(); } } public MouseKeyListener(){ setContadorclicks(0); setContadorkeys(0); } public void countKeysPress(final int miliseconds, final MouseKeyListener aux){ { public void run() { // Aquí el código que queremos ejecutar. aux.setContadorkeys(0); try { // TODO Auto-generated catch block e.printStackTrace(); } } }; Timer timer; // Dentro de 0 milisegundos avísame cada miliseconds timer.scheduleAtFixedRate(timerTask, 0, miliseconds); } //El método que se utilizará por ahora es nativeKeyPressed: public void nativeKeyPressed(NativeKeyEvent e) { //El código que imprimirá en la salida estándar cuál tecla se ha presionado es: setContadorkeys(getContadorkeys() + 1); } public void nativeKeyReleased(NativeKeyEvent e) { // TODO Auto-generated method stub } public void nativeKeyTyped(NativeKeyEvent e) { // TODO Auto-generated method stub } public void nativeMouseClicked(NativeMouseEvent arg0) { // TODO Auto-generated method stub setContadorclicks(getContadorclicks() + 1); } public void nativeMousePressed(NativeMouseEvent arg0) { // TODO Auto-generated method stub } public void nativeMouseReleased(NativeMouseEvent arg0) { // TODO Auto-generated method stub } /** * @return the contadorclicks */ public int getContadorclicks() { return contadorclicks; } /** * @param contadorclicks the contadorclicks to set */ public void setContadorclicks(int contadorclicks) { this.contadorclicks = contadorclicks; } /** * @return the contadorkeys */ public int getContadorkeys() { return contadorkeys; } /** * @param contadorkeys the contadorkeys to set */ public void setContadorkeys(int contadorkeys) { this.contadorkeys = contadorkeys; } }
si alguien me puede ayudara conseguir el error o decirme alguna otra forma mas eficiente de hacerlo lo agradeceria.
Adicionalmente deben de saber que ese valor lo voy a almacenar en una base de datos.
Gracias