Getting WiFi signal strength in Android

喜你入骨 提交于 2019-11-26 10:27:54

问题


I can get WiFi signal level in dBm using following code.

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

It gives negative value. When we see the default system WiFi setting and clicked on the connected WiFi network, it gives \"Good\" or \"Bad\" as signal strength. What is the range that we can filter those negative vales as \"Good\" signal strength or \"Bad\" signal strength?


回答1:


its an old post but this might help someone...

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

Documentation: public static int calculateSignalLevel (int rssi, int numLevels)




回答2:


Please check how dBm values for received Wireless Signal power are represented.

Excellent >-50 dBm

Good -50 to -60 dBm

Fair -60 to -70 dBm

Weak < -70 dBm




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



回答4:


Yes, exactly. This is how dBm values for received signal power are represented. Here are some details at Wikipedia.

-100 means lowest value (no signal at all), and 0 means extremely good signal (100%)




回答5:


You already have got the levels, So i will tell you how to classify that wifi into high,medium or low strength. Following is the code

int level = 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
    }


来源:https://stackoverflow.com/questions/13932724/getting-wifi-signal-strength-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!