根据 Android 的距离变化获取经纬度更新

Getting latitude and longitude updates based off of change in distance for Android

我知道 Android 和位置 API 可以使用 "setInterval" 方法和其他方法通过时间间隔接收经纬度的定期更新在 "LocationRequest" class 上,但我想知道的是,在没有它的情况下,根据与先前位置相比的距离变化,通过 GPS 获取经纬度更新的好方法是什么始终开启并且不浪费电池(最好是节能的解决方案)。

例如,假设我从一个地方开始,然后 2 分钟后我距离最初开始的距离 5 公里。此时 GPS 会检测位置的变化并更新设备上的纬度和经度。

如果有人可以提供一些关于如何执行此操作的见解或代码示例,那就太好了!

谢谢

您可以根据您与之前位置的距离来更新您的位置属性,但是您不能根据该位置更新 GPS 频率,因为您需要一个位置请求来确定您已经足够远了。

如果您想要一个节能的解决方案,您可以降低新更新出现的速度。您还可以减少 window 监听位置的持续时间(位置可能不太准确)。

可以找到很多信息 here,特别是在 Adjusting the model to save battery and data exchangeDeciding when to start listening for updates 章节

如果您在 requestLocationUpdate 参数中指定要获取更新的距离,则可以获得位置更改。

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

示例如下:

LocationManager yourLoc = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
yourLoc.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 2, onLocationChange);

在这里,无论您在特定位置停留了多长时间,您每行驶 2 米就会收到位置变化。

希望这能回答您的问题!!!