2

在我的 android 程序中,我在请求 gps 时设置了最短时间和最短距离。但是,只有在我开始收听时才会发生“onLocationChanged”操作。

如果我停止收听然后开始收听,它是否会将新 gps 的值与过去的 gps 值进行比较?当我开始收听时,我需要以某种方式清除它吗?

注意:测试时我在同一个位置。

4

2 回答 2

0

以此为例:

LocationManager loc = (LocationManager)this.getSystemService(
    Context.LOCATION_SERVICE
);
loc.requestLocationUpdates(
    LocationManager.GPS_PROVIDER, 2000, 10, locationListener
);

onLocationChanged()处理的- 方法将在以下LocationListener情况下被调用:

  • 自上次更新以来,您至少移动了10 米
  • 自上次更新以来已过去至少2 秒

requestLocationUpdates()-method的文档提供了更多信息:

[...]位置更新之间的经过时间永远不会少于minTime尽管它可能更多取决于位置提供程序的实现和其他应用程序请求的更新间隔。

[...] 该minDistance参数还可用于控制位置更新的频率。如果它大于 0,那么位置提供程序只会在位置变化至少 minDistance几米并且至少 minTime经过几毫秒时才向您的应用程序发送更新。

此外,它还包含以下信息:

在 Jellybean 之前, minTime 参数只是一个提示,一些位置提供程序实现忽略了它。从 Jellybean 及以后,Android 兼容设备必须遵守 minTime 和 minDistance 参数。

这只是一种节省电池的机制,您不必自己做任何事情,然后为这两个参数选择适当的值。

于 2012-07-29T18:31:50.877 回答
0

使用 getLastKnownLocation 来使用最后一个已知位置。

于 2012-07-29T15:59:00.963 回答