我正在做一个项目,该项目将研究基于WiFi信号的室内定位,并且目前在开始使用合适的2D三边测量方法方面有些麻烦。
我有我的应用程序来扫描访问点,并且只处理当前连接的网络上的访问点:
BroadcastReceiver wifiReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
results = wifiManager.getScanResults();
unregisterReceiver(this);
String checker = wifiManager.getConnectionInfo().getSSID();
for (ScanResult scanResult : results) {
if(checker.equals('"'+scanResult.SSID+'"'))
{
DecimalFormat df = new DecimalFormat("#.##");
arrayList.add(scanResult.SSID + "/"+ scanResult.BSSID + " - " +
df.format(calculateDistance((double)scanResult.level,
scanResult.frequency)) + "m"); //Output for testing
adapter.notifyDataSetChanged();
}
}
};
};
我还在使用自由空间路径损耗来计算信号电平和频率之间的距离。在此功能中可以看到:
public double calculateDistance(double signalLevelInDb, double freqInMHz) {
double exp = (27.55 - (20 * Math.log10(freqInMHz)) + Math.abs(signalLevelInDb)) / 20.0;
return Math.pow(10.0, exp);
}
我遇到的主要麻烦是,如何将来自同一网络上三个独立接入点的FSPL距离用于三角定位。这主要是由于我对数学的理解有限,并希望Java拥有标准数学库集以外的其他库来提供帮助。