Search code examples
javahardware-interface

Monitoring battery or power supply of laptop from java


I am developing an application which monitors the presence of the power supply of the laptop. If there is a power cut or restoration it will intimate me over email. It will also application monitoring and controlling over email (Basically to control my laptop from my office over email). I am done with email interfacing but I have no idea on how to monitor the power supply / battery supply from java.

If any can give some pointer on this it will be of great help.

Thanks in advance ....


Solution

  • You have probably already solved this problem but for the others - you can do it the way Adam Crume suggests, using an already written script battstat.bat for Windows XP and higher. Here is an example of the resulting function:

    private Boolean runsOnBattery() {
        try {
            Process proc = Runtime.getRuntime().exec("cmd.exe /c battstat.bat");
    
            BufferedReader stdInput = new BufferedReader(
                new InputStreamReader(proc.getInputStream()));
    
            String s;
            while ((s = stdInput.readLine()) != null) {
                if (s.contains("mains power")) {
                    return false;
                } else if (s.contains("Discharging")) {
                    return true;
                }
            }
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    
        return false;
    }
    

    Or you can simplify the script to return directly True/False or whatever fits.