2009-03-05 23 views
9

¿Cómo detectar que una PC ha estado inactiva durante 30 segundos usando Java?¿Cómo detectar que una PC ha estado inactiva durante 30 segundos usando Java?

EDITADO

Con inactivo quiero decir que no hay actividad del usuario. El usuario no hace nada en 30 segundos. Me gustaría hacer una aplicación como Windows, que detecta que el usuario no hace nada e ingresa en stad-by.

+0

¿Puedes expresar tu pregunta de una manera más específica? – rogeriopvl

+0

Necesita definir 'inactivo' - ¿no es la entrada del usuario, no hay actividad de disco, no hay procesos en ejecución, una carga de CPU promedio o qué? – Skizz

+0

¿Qué significa "inactivo" incluso? No/poca actividad de la CPU (¿qué pasa con los sistemas multiproc)? No hay entrada de usuario? Sin tráfico de red? ¿No hay E/S de disco duro? – sleske

Respuesta

6

Directamente desde Java no es posible. Tendrás que encontrar alguna biblioteca nativa y crear un contenedor JNI para eso.

+0

Muestra algún contenedor JNI – YumYumYum

6

No es fácil de hacer, eche un vistazo al método OperatingSystemMXBean getSystemLoadAverage() solo disponible desde java 6 podría mantener un seguimiento de ello y si es el mismo por un tiempo determine que la pc está inactiva.

Esto supone inactivo en términos de CPU inactivo

OperatingSystemMXBean operatingSystemMxBean = ManagementFactory.getOperatingSystemMXBean();

+0

Siempre devuelve -1 en Windows 7. ¿Alguna pista? – qasimzee

+0

De acuerdo con [JavaDoc] (http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/management/OperatingSystemMXBean.html). Si el promedio de carga no está disponible, se devuelve un valor negativo. Podría estar de suerte que este método funcione en Windows 7. –

Cuestiones relacionadas