目前我使用下一个函数来处理位置变化
locationManager.requestLocationUpdates(bestProvider, (60000), 1000, (LocationListener) this);
但问题是系统将等待检查位置是否更改的最短时间(以毫秒为单位)直到时间过去,在我的例子中是 60000 毫秒。
我的问题是,是否有任何方法可以让 onLocation changed 仅在用户移动一定距离(以米为单位)而不使用任何等待时间时触发?
谢谢。
最佳答案
可以使用推荐的FusedLocationProviderApi而不是 LocationManager(它应该更准确并提供更好的电池性能)并且您可以在 LocationRequest 上设置一些过滤器,您将其作为参数提供给您的位置查询。具体来说,您会对这种方法感兴趣:
这就是你想要的。 还要检查:setPriority() , setInterval() , setFastestInterval() , 和别的。
您可以将它们组合使用,如下所示:
private void startLocationUpdates() {
final LocationRequest locationRequest = LocationRequest.create().setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY).setInterval(LOCATION_UPDATE_INTERVAL)
.setFastestInterval(LOCATION_UPDATE_FASTEST_INTERVAL).setSmallestDisplacement(LOCATION_UPDATE_SMALLEST_DISPLACEMENT_METERS);
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, locationListener);
}
关于android - 仅在位置更改时更新位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37572482/