提高GPS频率和准确度

时间:2013-03-07 21:24:40

标签: android gps

我正在探索使用GPS进行VR游戏的可能性。我目前的测试版本的频率和精度都非常低。

在清单中我有

<uses-permission android:name="android.permission.LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

我的实例位置管理器就像

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
           0, 0, this);  

然后我使用distanceBetween函数来获取方位和距离

public void onLocationChanged(Location location) {
    if(lastLocation != null) {          
        Location.distanceBetween(lastLocation.getLatitude(), lastLocation.getLongitude(), location.getLatitude(), location.getLongitude(), distanceBetween);
        newGpsDataToSend = true;

        if(debug)
            debugListener.debugGPS(distanceBetween);

        releaseSendThread();
    }

    lastLocation = location;        
} 

频率低于1hz(5-10hz应该可以吗?)并且轴承和距离非常大。

我在代码中做错了吗?我不关心电池消耗等,我想要从电话中获得最快最可靠的数据。

完整来源 https://github.com/AndersMalmgren/FreePIE/blob/VRWalk/Lib/Android/FreePIE%20Android%20IMU/src/com/freepie/android/imu/UdpSenderTask.java#L120

1 个答案:

答案 0 :(得分:0)

对于高采样频率(对于GPS采样计数1 Hz为高),您将获得GPS读数,其中位置之间的距离小于GPS​​精度。因此观察到轴承和距离是跳动的。 通过过滤或计算平均值,可以更好地降低采样频率或处理数据。

例如,对于飞行记录应用程序,我每隔2到5秒采样一次,我计算最后5个高度读数的平均值来计算垂直速度。