获取WiFi信号强度在Android中(Getting WiFi signal strength i

2019-07-05 16:24发布

我可以用下面的代码获得WiFi信号电平以dBm。

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

它提供了负值。 当我们看到系统默认的无线网络设置,点击连接WiFi网络,它提供了“好”或“坏”的信号强度。 什么是我们可以过滤那些负面瓦莱斯为“好”的信号强度或“坏”的信号强度范围内?

Answer 1:

其旧的文章,但是这可能帮助别人...

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

文档: 公共静态INT calculateSignalLevel(INT RSSI,INT numLevels)



Answer 2:

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

优秀> -50dBm的

良好-50至-60 dBm的

博览会-60至-70 dBm的

弱<-70dBm的



Answer 3:

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");


Answer 4:

对,就是这样。 这是如何用于接收信号功率dBm的值被表示。 以下是在维基百科的一些细节。

-100是指最低值(无信号在所有),而0表示非常良好的信号(100%)



Answer 5:

你已经拿到了水平,所以我会告诉你如何在无线网络划分为高,中,低强度。 以下是代码

INT级别= result.level;

    if (level <= 0 && level >= -50) {
        //Best signal

    } else if (level < -50 && level >= -70) {
        //Good signal


    } else if (level < -70 && level >= -80) {
        //Low signal


    } else if (level < -80 && level >= -100) {
       //Very weak signal

    } else {
       // no signals
    }


文章来源: Getting WiFi signal strength in Android