How to detect that a PC has been idle for 30 seconds using Java?
EDITED
With idle I mean that there are no user activity. The user does nothing in 30 seconds
Not possible as requested, but you can create workarounds using the java.lang.management API. A JNI implementation can also be found on javaworld.
Not easy to do have a look at OperatingSystemMXBean method getSystemLoadAverage() only available since java 6 you could keep a track of it and if it is the same for a while determine the pc is idle.
This assumes idle in terms of idle CPU
OperatingSystemMXBean operatingSystemMxBean = ManagementFactory.getOperatingSystemMXBean();
Directly from java it is not possible. You'll have to find some native library and create a JNI wrapper for that.
I've come across this excellent example of detecting system wide idle time using JNA. Java Native Access (JNA) is a library that provides access to Java Native Interface (JNI) without the need for you to actually write native code.
Here's the example that is very close to what you're asking for.