android - 仅在位置更改时更新位置

标签 android android-studio gps location

目前我使用下一个函数来处理位置变化

locationManager.requestLocationUpdates(bestProvider, (60000), 1000, (LocationListener) this); 

但问题是系统将等待检查位置是否更改的最短时间(以毫秒为单位)直到时间过去,在我的例子中是 60000 毫秒。

我的问题是,是否有任何方法可以让 onLocation changed 仅在用户移动一定距离(以米为单位)而不使用任何等待时间时触发?

谢谢。

最佳答案

可以使用推荐的FusedLocationProviderApi而不是 LocationManager(它应该更准确并提供更好的电池性能)并且您可以在 LocationRequest 上设置一些过滤器,您将其作为参数提供给您的位置查询。具体来说,您会对这种方法感兴趣:

setSmallestDisplacement()

这就是你想要的。 还要检查: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/

相关文章:

java - 无法在我的 Android 设备上获取经度和纬度

java.lang.UnsatisfiedLinkError : while importing two libraries built with . so 文件(ndk 文件)

android - Android中的多个声音按钮:通过按钮开始,停止和循环播放声音

android - Java.lang.ClassNotFoundException : Didn't find class Kotlin 异常

java - 无法将 GPS 坐标发送到服务器

java - 如何在收到短信时发送回复短信?

java - VISIBLE 无法解析为变量

android - PLAIN_TEXT_TYPE 问题

java - 为什么 Active Android Library 报告这个错误 = 在 Android 4.1 之前,... 会错误地覆盖 Drawable 中的 package-private 方法

android-studio - 在 flutter 中将文件添加到git忽略