54

我可以使用以下代码获得以 dBm 为单位的 WiFi 信号电平。

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

它给出负值。当我们看到默认的系统 WiFi 设置并单击已连接的 WiFi 网络时,它会给出“好”或“坏”作为信号强度。我们可以将这些负值过滤为“好”信号强度或“坏”信号强度的范围是多少?

4

7 回答 7

69

这是一个旧帖子,但这可能会对某人有所帮助......

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)

于 2013-08-30T16:58:04.867 回答
35

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

优秀 >-50 dBm

良好 -50 至 -60 dBm

一般 -60 至 -70 dBm

弱 < -70 dBm

于 2015-11-13T09:28:21.163 回答
24
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");
于 2015-06-17T20:21:33.260 回答
8

对,就是这样。这就是接收信号功率的 dBm 值的表示方式。以下是Wikipedia 上的一些详细信息。

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

于 2012-12-18T12:59:49.987 回答
7

你已经有了等级,所以我将告诉你如何将 wifi 分类为高、中或低强度。以下是一段代码

    int level = result.level;

    if (level >= -50) {
        //Best signal
    } else if (level >= -70) {
        //Good signal         
    } else if (level >= -80) {
        //Low signal
    } else if (level >= -100) {
       //Very weak signal
    } else {
       //Too low signal
    }
于 2018-07-14T19:54:24.710 回答
0

以下是三星 A7 使用的 wifi 信号电平:

return when (rssi) {
    in -63..-1 -> 4
    in -73..-64 -> 3
    in -83..-74 -> 2
    in -93..-84 -> 1
    else -> 0
}

我认为其他品牌应该非常相似。

于 2021-12-17T18:46:17.763 回答
-1

WifiManager.java中的常量略有不同,因此我将在此处添加它们:

MIN_RSSI: 任何小于或等于-100的都将显示0 条

MAX_RSSI: 任何大于或等于-55的都将显示最大条

于 2020-12-08T21:51:23.520 回答