根据 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 exchange
和 Deciding 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 米就会收到位置变化。
希望这能回答您的问题!!!
我知道 Android 和位置 API 可以使用 "setInterval" 方法和其他方法通过时间间隔接收经纬度的定期更新在 "LocationRequest" class 上,但我想知道的是,在没有它的情况下,根据与先前位置相比的距离变化,通过 GPS 获取经纬度更新的好方法是什么始终开启并且不浪费电池(最好是节能的解决方案)。
例如,假设我从一个地方开始,然后 2 分钟后我距离最初开始的距离 5 公里。此时 GPS 会检测位置的变化并更新设备上的纬度和经度。
如果有人可以提供一些关于如何执行此操作的见解或代码示例,那就太好了!
谢谢
您可以根据您与之前位置的距离来更新您的位置属性,但是您不能根据该位置更新 GPS 频率,因为您需要一个位置请求来确定您已经足够远了。
如果您想要一个节能的解决方案,您可以降低新更新出现的速度。您还可以减少 window 监听位置的持续时间(位置可能不太准确)。
可以找到很多信息 here,特别是在 Adjusting the model to save battery and data exchange
和 Deciding 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 米就会收到位置变化。
希望这能回答您的问题!!!