我正在探索使用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应该可以吗?)并且轴承和距离非常大。
我在代码中做错了吗?我不关心电池消耗等,我想要从电话中获得最快最可靠的数据。
答案 0 :(得分:0)
对于高采样频率(对于GPS采样计数1 Hz为高),您将获得GPS读数,其中位置之间的距离小于GPS精度。因此观察到轴承和距离是跳动的。 通过过滤或计算平均值,可以更好地降低采样频率或处理数据。
例如,对于飞行记录应用程序,我每隔2到5秒采样一次,我计算最后5个高度读数的平均值来计算垂直速度。