我可以使用以下代码获得以dBm为单位的WiFi信号电平。
for (ScanResult result : wifiScanResultList) {
int signalLevel = result.level;
}
它给出负值。当我们看到默认的系统WiFi设置并点击连接的WiFi网络时,它会给出“好”或“坏”作为信号强度。我们可以将这些负值过滤为“良好”信号强度或“差”信号强度的范围是多少?
答案 0 :(得分:50)
这是一个老帖子,但这可能对某人有帮助......
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)
答案 1 :(得分:21)
请检查接收的无线信号功率的dBm值是如何表示的。
优秀> -50 dBm
良好-50到-60 dBm
公平-60到-70 dBm
弱< -70 dBm
答案 2 :(得分:17)
contacts = request.args.getList('contact')
print(contacts) # ['me', 'others', 'hr']
答案 3 :(得分:8)
是的,确切地说。这是表示接收信号功率的dBm值的方式。 Here are维基百科的一些细节。
-100表示最低值(根本没有信号),0表示非常好的信号(100%)
答案 4 :(得分:2)
您已经掌握了这些级别,因此,我将告诉您如何将wifi分为高强度,中强度或低强度。以下是代码
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
}
答案 5 :(得分:0)
我不知道其他值来自何处,但也有一些记录在案的值。
WifiManager.java
中的常量:
MIN_RSSI
:任何小于或等于 -100 的内容都会显示 0条。
MAX_RSSI
:任何大于或等于 -55 的内容都会显示最大条形图。