2015-10-14 46 views
0

我使用此代码获取wifi信号集(BSSID,SSID,RSSI等)。Wi-Fi信号强度单元

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级别。

我想获得rssi级别的值由浮点数,因为我用于室内导航(指纹)。

有没有办法通过浮点得到RSSI水平值?

ps。对不起,我英文不好。

回答

0

即使它在float,这并不意味着更高的准确性,因为float是32位相同的int

但无论如何,它只是无法在hardware level

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

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

所以这就是你必须使用的,大约7位。

P.S.根据维基文章,你不会有太多的运气与你的方法:

RSSI并不总是提供足够准确的测量,以正确确定位置。

+0

谢谢!为了克服信号的准确性,我们的会员中的一个人制定了一个稳定信号的算法! –