requestLocationUpdates

requestLocationUpdates

我正在使用Android的LocationManager及其方法requestLocationUpdates,如下所示:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 10, this);


我发现必须同时满足minTime和minDistance的条件才能进行位置更新,但是我需要每3秒或10米进行一次更新。

我试图发出2个这样的请求:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 0, this);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 10, this);


但它不起作用,我只能使用此代码每10米更新一次,而不是每3秒更新一次。

如果有问题,我正在使用API​​19。

最佳答案

requestLocationUpdate()上的文档说:


  requestLocationUpdates(String provider,long minTime,float
  minDistance,LocationListener侦听器)
  
  使用命名的提供程序和未决的意图注册位置更新。


所以您应该像locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 10, this);这样称呼它

但是,如果将minTime设置为0,则它​​将在第一次收到位置更新时被调用一次,然后直到您在minDistance米中更改位置后才会被调用。

Documentation Link for Reference

编辑

根据与@Matej的讨论,我需要每10米更新一次,即使它发生的时间少于3秒,也需要每3秒更新一次,即使位置的变化不超过10米

如果要定期requestLocationUpdates,则应使用TimerTimerTask并让requestLocationUpdates每3秒运行一次


  时间表(TimerTask任务,长时间延迟,长时间)
  
  计划指定的任务以重复执行固定延迟,
  在指定的延迟后开始。

07-27 21:20