我想在我的android应用程序中使用GPS获取最新的位置更新,其中用户必须在他进入时在特定位置检入,而在他离开时检查出是手动操作。 如果用户驻留在指定的半径(即18米)内,他将成功检入。GPS坐标偏差
以下是我的设置。
// Milliseconds per second
private static final int MILLISECONDS_PER_SECOND = 1000;
// Update frequency in seconds
public static final int UPDATE_INTERVAL_IN_SECONDS = 40;
// Update frequency in milliseconds
private static final long UPDATE_INTERVAL =
MILLISECONDS_PER_SECOND * UPDATE_INTERVAL_IN_SECONDS;
private static final int FASTEST_INTERVAL_IN_SECONDS = 40;
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(
LocationRequest.PRIORITY_HIGH_ACCURACY
);
mLocationRequest.setInterval(UPDATE_INTERVAL);
mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
这种方法的问题是,因为我每40秒后取出的位置,如果用户是在一个地方,我们仍然得到5米偏离他目前的位置远在坐标,有时更多的则是其是不能接受的。
所以有一种方法,我可以配置该位置API只提取位置,如果用户超出18米,否则它会继续显示相同的坐标,我试过但它不工作。
mLocationRequest.setSmallestDisplacement(18);
Android很有可能(特别是在室内)计算位置的融合效果并不像您需要的那样精确。 – ahjohnston25 2015-02-10 05:14:37
因此,我们可以依靠'setSmallestDisplacement' – Hunt 2015-02-10 05:18:11
但是,可能会出现GPS错误,但是我创建了一个答案,我认为这是您当前问题的更大原因。 – ahjohnston25 2015-02-10 05:23:24