我正在做一个学校项目,我需要检索我能找到的所有接入点。 当我获得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]
答案 0 :(得分:0)
Capabilities字段告诉您Access-Point的功能(包括加密)。
我不知道您用来获取r.level的API,但根据所使用的无线驱动程序,它可能是负面或正面的。它通常就是芯片将RSSI等同于(https://en.wikipedia.org/wiki/Received_signal_strength_indication)。你可能只需要获取r.level的绝对值。还要记住,越接近r.level为零(无论是负还是正),接收信号越强......如果有意义的话。至于将r.level等同于距离,你将不得不做出一些假设,它永远不会是精确的。