特定网络信息

时间:2017-07-09 12:45:00

标签: android network-programming

我正在做一个学校项目,我需要检索我能找到的所有接入点。 当我获得List mScanResultList时,我可以访问我需要的字段。 我测试的代码是:

for(ScanResult r : mResultList) {
                    Log.i(TEST, "BSSID: " + r.BSSID);
                    Log.i(TEST, "SSID: " + r.SSID);
                    Log.i(TEST, "Frequency: " + r.frequency);
                    Log.i(TEST, "Level: " + r.level);
                    Log.i(TEST, "Capabilities: " + r.capabilities);
                }

我的问题是: r.level是一个负值。我需要分贝强度将其转换为近似距离。我应该这样做 - (r.level)?

此外,我需要知道"安全类型:WEP,WPA,Open ..." (引用项目任务)。我从哪里获得这些信息?我无法理解r.capabilities的含义。

我发现的网络的Capabilities字段为:

Capabilities: [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]

1 个答案:

答案 0 :(得分:0)

Capabilities字段告诉您Access-Point的功能(包括加密)。

我不知道您用来获取r.level的API,但根据所使用的无线驱动程序,它可能是负面或正面的。它通常就是芯片将RSSI等同于(https://en.wikipedia.org/wiki/Received_signal_strength_indication)。你可能只需要获取r.level的绝对值。还要记住,越接近r.level为零(无论是负还是正),接收信号越强......如果有意义的话。至于将r.level等同于距离,你将不得不做出一些假设,它永远不会是精确的。