Android 提高GPS频率和精度

Android 提高GPS频率和精度,android,gps,Android,Gps,我正在探索使用GPS进行虚拟现实游戏的可能性。在我当前的测试构建中,频率和精度都非常低 在舱单上我有 <uses-permission android:name="android.permission.LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 然后我使用distanceBetween函数得到方位和距离 public void onLoca

我正在探索使用GPS进行虚拟现实游戏的可能性。在我当前的测试构建中,频率和精度都非常低

在舱单上我有

<uses-permission android:name="android.permission.LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
然后我使用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,对吗?),方位和距离非常不稳定

我是不是在代码中做错了什么?我不关心电池消耗等问题,我只想从手机上获得最快、最可靠的数据

完全来源

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


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

那么你是说不可能获得更好的性能?糟糕,我想我得试试卡尔曼滤波和加速度计融合:/这是电话,不是导弹航空电子设备:-)
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;        
}