Wi-Fi信号强度单位

时间:2015-10-14 07:48:16

标签: android android-wifi

我使用此代码获取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;
        }  
    }
}

但此代码的scanResults按INT返回RSSI级别。

我想通过float得到rssi级别的值,因为我用于室内导航。(指纹)。

无法通过浮点数获取RSSI级别值吗?

PS。对不起,我的英语很差。

1 个答案:

答案 0 :(得分:0)

即使它在float中,也不会意味着更高的准确性,因为floatint相同32位。

但无论如何,hardware level

都无法使用它
  

供应商和芯片组制造商提供自己的准确性,粒度。

     

Cisco Systems卡的RSSI_Max值为100,将报告101种不同的功率级别,其中RSSI值为0到100.另一种流行的Wi-Fi芯片组由Atheros制造。基于Atheros的卡将返回RSSI值0到127(0x7f),其中128(0x80)表示无效值。

这就是你必须使用的东西,大约7位。

P.S。根据维基文章,你不会对你的方法好运:

  

RSSI并不总是提供足够精确的测量值来正确确定位置。