【问题标题】:Getting latitude and longitude updates based off of change in distance for Android根据 Android 的距离变化获取纬度和经度更新
【发布时间】:2015-04-13 23:58:30
【问题描述】:

我知道使用 Android 和 Location API,可以使用“setInterval”方法和“LocationRequest”类上的其他方法在一段时间内定期接收纬度和经度更新,但我想知道的是,有什么好方法可以通过 GPS 根据与先前位置相比的距离变化来获取纬度和经度更新,而不需要一直打开它并且不浪费电池(最好是节能的解决方案)。

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

如果有人能提供一些关于如何做到这一点的见解或代码示例,那就太好了!

谢谢

【问题讨论】:

    标签: android google-maps gps


    【解决方案1】:

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

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

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

    【讨论】:

    • 我已阅读您推荐的部分,但我想知道您对在应用当前未激活且位置更新将通过接收器和服务提供时提供位置更新有何建议并且会通过推送通知之类的方式通知用户位置的变化。例如,没有使用手机,但与几分钟前的位置相比,他们的位置发生了 5 公里的变化,您对跟踪这些经纬度变化有何建议?
    • 看看this tutorial;它与您想要实现的目标非常接近。他们希望在接近兴趣点时收到通知,而您希望在您离开时收到通知...
    • 感谢您提供真正帮助我找到解决方案的建议
    【解决方案2】:

    如果您在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 米后,您都会在此处收到位置变化。

    希望能回答你的问题!!!

    【讨论】:

    • 感谢您指出这一点,在阅读您的答案之前,我刚刚在 API 文档中阅读了这一点
    猜你喜欢
    • 1970-01-01
    • 2013-10-25
    • 2012-09-07
    • 1970-01-01
    • 2017-09-05
    • 2014-08-29
    • 1970-01-01
    • 2018-03-25
    相关资源
    最近更新 更多