如果您想覆盖Windows平台,则可以使用以下方法:
public int getWirelessStrength() {
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(); }
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;
}
上述方法利用了Windows
Netsh
Command-line Utility
获取所需信息。返回的整数结果是信号强度的百分比,因此,如果返回75,则WiFi信号强度为75%。如果要为Unix或Linux执行类似的操作,则可以使用
iwlist
或
iwconfig
以类似的方式命令并解析出所需的信号强度。对于MAC,我相信您需要使用
Airport Utility
。