Blazing Forrest
Blazing Forrest

Reputation: 53

Find WIFI State in JAVA

In my java application, I want to see what state the wifi is at (E.G. 1 bar, 2 bar or no wifi)

I was wondering how I would be able to find the wifi state of the computer in native Java, or by using a ping/pong application or if I have to parse the state of the wifi directly to the application

Any help would be gratefully appreciated!

P.S. I'm not using android

Upvotes: 0

Views: 665

Answers (1)

DevilsHnd - 退した
DevilsHnd - 退した

Reputation: 9192

If you want to cover the Windows platform then you can utilize a little method like this:

public int getWirelessStrength() {
    // The returned integer value is in relation to strength percent.
    // If 75 is returned then the wireless signal strength is at 75%.
    List<String> list = new ArrayList<>();
    int signalStrength = 0;
    String cmd = "netsh wlan show interfaces"; 
    try {
        Process p = Runtime.getRuntime().exec("cmd /c " + cmd);
        p.waitFor();
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()))) {
            String line;
            while ((line = reader.readLine()) != null) {
                list.add(line);
            }
        }
        if (p.isAlive()) { p.destroy(); }

        // Get the Signal Strength.
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).trim().toLowerCase().startsWith("signal")) {
                String[] ss = list.get(i).split(":");
                if(ss.length == 2) {
                    signalStrength = Integer.parseInt(ss[1].replace("%","").trim());
                }
                break;
            }
        }
    }
    catch (IOException | InterruptedException ex) { 
        Logger.getLogger("getWirelessStrength()").log(Level.SEVERE, null, ex);
    }
    return signalStrength;
}

The above method utilizes the Windows Netsh Command-line Utility to acquire the desired information. The returned integer result is a percent of signal strength so, if 75 is returned then the WiFi signal strength is 75%. If you want to do something similar for Unix or Linux then you can use the iwlist or iwconfig command and parse out the required signal strength in a similar fashion. For the MAC I believe you would need to use the Airport Utility.

Upvotes: 1

Related Questions