LocationManager requestLocationUpdates minTime 或 minDistance

Mat*_*tej 1 java gps android android-4.4-kitkat android-gps

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

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 10, this);
Run Code Online (Sandbox Code Playgroud)

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

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

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 0, this);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 10, this);
Run Code Online (Sandbox Code Playgroud)

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

如果这很重要,我正在使用 API19。

Dip*_* s. 5

requestLocationUpdate() 上的文档说:

requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)

使用指定的提供程序和挂起的意图注册位置更新。

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

但是如果您将 minTime 设置为 0,它将在第一次收到位置更新时调用一次,然后在您更改 minDistance 米中的位置之前不会调用它。

参考文档链接

编辑

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

如果你想定期requestLocationUpdates,你应该使用TimerandTimerTask并且requestLocationUpdates每 3 秒运行一次

schedule(TimerTask 任务,长延时,长周期)

为重复的固定延迟执行安排指定的任务,在指定的延迟之后开始。