Android - 根据特定的时间量和特定的行进距离获取 GPS 更新

标签 android gps location updates

我想每 60 秒或每行驶 1500 米获取一次位置更新。 显然,LocationManager 允许您设置时间和米的最小值,但 GPSUpdate 不会触发,直到满足时间和距离的最小值。 但我想要的是每 60 秒(无论用户走了多远)和每 1500 米(无论花费多长时间)更新一次 GPS。

我曾尝试使用多个 locationClients 并将 locationRequests 设置为每个条件,但它们无法同时连接。

有什么简单的方法可以做到这一点吗?

最佳答案

抱歉我从来没有回复过,我已经完全忘记了这个问题。

无论我过去的解决方案是什么,都不会是正确的,因为我最近添加了一种更有效的方法来做到这一点。

首先.. 如果您使用的是 FusedLocationAPI 和 GoogleApiClient,请查看我发布的答案 here .

如果您使用的是 LocationManager 类而不是 GoogleApiClient,则解决方案类似。

需要创建两个requestLocationUpdates,一个是Time only,一个是Distance only,未使用的字段设置为0,例如:

locationManager.requestLocationUpdates(bestProvider, 0, UPDATE_MIN_DISTNACE, myBackupLocationDistanceIntervalListener);
locationManager.requestLocationUpdates(bestProvider, UPDATE_TIME_INTERVAL, 0, myBackupLocationTimeIntervalListener);

如果需要,也可以使用 Criteria 来完成:

locationManager.requestLocationUpdates(0, UPDATE_MIN_DISTNACE, gpsCriteria, myBackupLocationDistanceIntervalListener, Looper.getMainLooper());
locationManager.requestLocationUpdates(UPDATE_TIME_INTERVAL, 0, gpsCriteria, myBackupLocationTimeIntervalListener, Looper.getMainLooper());

然后只需定义您的监听器。您可以使用相同或不同的监听器来处理请求的结果。

希望这对您有所帮助。

关于Android - 根据特定的时间量和特定的行进距离获取 GPS 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27506736/

相关文章:

android - 在 Android 中长期运行的服务上读取、存储和发送读取的 GPS 位置

android - LocationManager 禁用 NETWORK_PROVIDER

javascript location.hash 在 IE 中刷新

java - Twitter Composer 回调 OnSuccess/OnFailure Fabric

java - 在android中一起调用多个号码

iOS 核心位置 - 获取最准确的位置坐标

android - 如何从数据库中检索位置对象?

iphone - GPS定位器

android - 如何从 Android 向 Azure IoT 中心发送短信

java - 线程返回值永久检查