在我的android程序中,我在请求gps时设置了最小时间和最小距离。但是,当我开始收听时,有时只会发生'onLocationChanged'动作。
如果我停止聆听然后开始聆听,是否会将新gps的值与过去的gps值进行比较?我开始听的时候是否需要以某种方式清除它?
注意:测试时我在同一个位置。
答案 0 :(得分:0)
使用getLastKnownLocation来使用最后的已知位置。
答案 1 :(得分:0)
以此为例:
LocationManager loc = (LocationManager)this.getSystemService(
Context.LOCATION_SERVICE
);
loc.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 2000, 10, locationListener
);
处理onLocationChanged()
的{{1}} - 方法将在以下时间调用:
requestLocationUpdates()
-method的文档提供了更多信息:
[...] 位置更新之间经过的时间永远不会更少 比
LocationListener
,虽然它可能更多取决于位置 提供程序实现和其他请求的更新间隔 应用[...]
minTime
参数也可用于控制 位置更新的频率。 如果大于0那么 位置提供商只会在发送时向您的应用程序发送更新 位置已更改至少minDistance
米,AND 至少minDistance
毫秒已过。
此外,它还包含以下信息:
在Jellybean之前,minTime参数只是一个提示,还有一些 位置提供程序实现忽略它。 来自Jellybean和 此外,Android兼容设备必须同时观察这两者 minTime和minDistance参数。
这只是一种节省电池的机制,您不需要自己做任何事情,除此之外为这两个参数选择合适的值。