Android上的2D无线三边

时间:2019-01-31 18:20:48

标签: java android math wifi trilateration

我正在做一个项目,该项目将研究基于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拥有标准数学库集以外的其他库来提供帮助。

我要定位的2D区域类似于以下内容: enter image description here

0 个答案:

没有答案