在Android中获取WiFi信号强度

我可以使用以下代码以dBm为单位获得WiFi信号级别。

for (ScanResult result : wifiScanResultList) { int signalLevel = result.level; } 

它给出了负值。 当我们看到默认的系统WiFi设置,并点击连接的WiFinetworking时,它会给出“好”或“坏”的信号强度。 我们可以将这些负值筛选为“良好”信号强度或“坏”信号强度的范围是什么?

Solutions Collecting From Web of "在Android中获取WiFi信号强度"

它的旧post,但这可能有助于某人…

 WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); int numberOfLevels = 5; WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int level = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), numberOfLevels); 

文档: public static int calculateSignalLevel(int rssi,int numLevels)

请检查接收的无线信号功率的dBm值是如何表示的。

优秀> -50 dBm

良好-50至-60 dBm

公平-60到-70 dBm

弱<-70 dBm

对,就是这样。 这就是接收信号功率的dBm值。 这里是维基百科的一些细节。

-100表示​​最低值(根本没有信号),0表示非常好的信号(100%)

 WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); // Level of a Scan Result List<ScanResult> wifiList = wifiManager.getScanResults(); for (ScanResult scanResult : wifiList) { int level = WifiManager.calculateSignalLevel(scanResult.level, 5); System.out.println("Level is " + level + " out of 5"); } // Level of current connection int rssi = wifiManager.getConnectionInfo().getRssi(); int level = WifiManager.calculateSignalLevel(rssi, 5); System.out.println("Level is " + level + " out of 5");