2

我正在探索将 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

4

1 回答 1

0

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

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

于 2013-03-08T13:20:34.557 回答