我可以使用以下代码以dBm为单位获取WiFi信号级别。Android中获取WiFi信号强度
for (ScanResult result : wifiScanResultList) {
int signalLevel = result.level;
}
它给出了负值。当我们看到默认的系统WiFi设置并点击了连接的WiFi网络时,它将信号强度设置为“好”或“差”。我们可以将这些负值筛选为“良好”信号强度或“差”信号强度的范围是什么?
我可以使用以下代码以dBm为单位获取WiFi信号级别。Android中获取WiFi信号强度
for (ScanResult result : wifiScanResultList) {
int signalLevel = result.level;
}
它给出了负值。当我们看到默认的系统WiFi设置并点击了连接的WiFi网络时,它将信号强度设置为“好”或“差”。我们可以将这些负值筛选为“良好”信号强度或“差”信号强度的范围是什么?
是的,确切地说。这就是表示接收信号功率的dBm值的方式。 Here are在维基百科的一些细节。
-100意味着最低值(无信号的话),0表示非常好的信号(100%)
其旧的文章,但是这可能帮助别人......
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)
如何知道信号强,非常强,即如果我们得到了3,4,那么字符串是什么 –
注意:docs说你需要应用上下文作为上下文! – chksr
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");
像冠军一样工作:D –
请检查如何表示接收到的无线信号功率的dBm值。
优秀> -50dBm的
良好-50至-60 dBm的
博览会-60至-70 dBm的
弱< -70dBm的
是不是dBm的为最部分否定? –
是的,那是真的。我需要的是我可以申请自己的WiFi处理Android应用程序的标准范围。当我在真实设备上点击连接的WiFi网络时,它会给我带来“良好”的信号强度。我想知道他们如何衡量它作为一个“好”的力量。谢谢回复。 – AnujAroshA
这是你的问题的答案:http://androidxref.com/4.2_r1/xref/frameworks/base/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java#103 –