我正在使用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秒更新一次。
如果有问题,我正在使用API19。
最佳答案
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
,则应使用Timer
和TimerTask
并让requestLocationUpdates
每3秒运行一次
时间表(TimerTask任务,长时间延迟,长时间)
计划指定的任务以重复执行固定延迟,
在指定的延迟后开始。