Wi-Fi信号强度单位
Wi-Fi signal strength unit
我使用此代码获取 wifi 信号设置。(BSSID、SSID、RSSI 等)。
public void sortScanResult()
{
wifiScan.scanWifiSignal();
scanedResults = new ArrayList<ScanResult>(wifiScan.getScanResults());
Comparator<ScanResult> comparator = new Comparator<ScanResult>() {
@Override
public int compare(ScanResult lhs, ScanResult rhs) {
return (lhs.level > rhs.level ? -1 : (lhs.level == rhs.level ? 0 : 1));
}
};
Collections.sort(scanedResults, comparator); //sorting result
if (scanedResults.size() > 10) {
int resultSize = scanedResults.size();
for (int index = resultSize - 1; ; index--) {
scanedResults.remove(index);
if (scanedResults.size() == 10) break;
}
}
}
但是此代码的扫描结果 return RSSI 级别为 INT。
我想通过浮点数获取 rssi 电平值以获得精度,因为我用于室内导航。(指纹)。
没有办法通过float获取RSSI电平值吗?
ps。对不起,我的英语很差。
即使它在 float
中,也不意味着更高的准确性,因为 float
与 int
.
是 32 位的
但无论如何它在 hardware level:
不可用
Vendors and chipset makers provide their own accuracy, granularity.
Cisco Systems cards have a RSSI_Max value of 100 and will report 101 different power levels, where the RSSI value is 0 to 100. Another popular Wi-Fi chipset is made by Atheros. An Atheros based card will return an RSSI value of 0 to 127 (0x7f) with 128 (0x80) indicating an invalid value.
这就是你必须使用的,大约 7 位。
P.S。根据维基文章,您的方法不会有太多运气:
RSSI doesn't always provide measurements that are sufficiently accurate to properly determine the location.
我使用此代码获取 wifi 信号设置。(BSSID、SSID、RSSI 等)。
public void sortScanResult()
{
wifiScan.scanWifiSignal();
scanedResults = new ArrayList<ScanResult>(wifiScan.getScanResults());
Comparator<ScanResult> comparator = new Comparator<ScanResult>() {
@Override
public int compare(ScanResult lhs, ScanResult rhs) {
return (lhs.level > rhs.level ? -1 : (lhs.level == rhs.level ? 0 : 1));
}
};
Collections.sort(scanedResults, comparator); //sorting result
if (scanedResults.size() > 10) {
int resultSize = scanedResults.size();
for (int index = resultSize - 1; ; index--) {
scanedResults.remove(index);
if (scanedResults.size() == 10) break;
}
}
}
但是此代码的扫描结果 return RSSI 级别为 INT。
我想通过浮点数获取 rssi 电平值以获得精度,因为我用于室内导航。(指纹)。
没有办法通过float获取RSSI电平值吗?
ps。对不起,我的英语很差。
即使它在 float
中,也不意味着更高的准确性,因为 float
与 int
.
但无论如何它在 hardware level:
不可用Vendors and chipset makers provide their own accuracy, granularity.
Cisco Systems cards have a RSSI_Max value of 100 and will report 101 different power levels, where the RSSI value is 0 to 100. Another popular Wi-Fi chipset is made by Atheros. An Atheros based card will return an RSSI value of 0 to 127 (0x7f) with 128 (0x80) indicating an invalid value.
这就是你必须使用的,大约 7 位。
P.S。根据维基文章,您的方法不会有太多运气:
RSSI doesn't always provide measurements that are sufficiently accurate to properly determine the location.