如何在Android中每分钟获取GPS坐标?

3

即使用户没有移动,我也希望每分钟获取我的坐标。因此,我使用了具有以下参数的requestLocationUpdates:

  locMgr.requestLocationUpdates(
                    LocationManager.GPS_PROVIDER,
                    60000,      // minTime in ms
                    0,      // minDistance in meters
                    PosljiLokacijo.this);

但是当我在我的HTC Hero(2.1 Android)上进行测试,并且我没有移动时,onLocationChanged()从不被调用。如果我将minDistance更改为1,则在开始时我会获得一些更新,但之后它们会以非常不规则的间隔出现。

我应该如何选择这两个参数(minTime和minDistance)以每分钟接收坐标?

2个回答

1
根据文档:
minTime是通知的最小时间间隔,以毫秒为单位。该字段仅用作提示以节省电力,并且位置更新之间的实际时间可能大于或小于此值。
我唯一能想到的方法是将minTime设置为0并丢弃太频繁的值。您仍然不能保证获得所需的更新频率,并准备好您的应用程序也会消耗电池电量。

1
电池不会成为问题,因为这个应用程序将在汽车中使用并插入其中。 - DixieFlatline
1
电池总是一个问题 :) - nifo
是的。在某些设备中,GPS(尤其是导航)会消耗大量电力,以至于几乎没有剩余电力来充电电池(从一些汽车充电器中)! - Ken Arnold

1
我认为在这种情况下,“minTime”或“minDistance”不会有帮助,除非:将最后的位置保存到变量中,并每分钟输出它们。让locationManager覆盖这些变量,这样一分钟后,位置变化就会变得可见。这样,您无需等待更新,因为您的变量始终保持实际位置。
您还可以从locationManager检索位置,并在一分钟后(或您想要的任何间隔)再次请求位置,而无需使用requestLocationUpdates。
例如,请查看Timer以设置对获取位置的方法进行重复调用:
http://developer.android.com/reference/java/util/Timer.html 这样,您还应该节省电池,因为系统不会一直寻找更新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接