【问题标题】:Android requestLocationUpdates minimumtime + minimumdistance don't really workAndroid requestLocationUpdates minimumtime + minimumdistance 并没有真正起作用
【发布时间】:2012-05-07 14:53:49
【问题描述】:
locationmanager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationlistener);

我知道这行代码应该尽可能频繁地更新设备位置,对吧?具体来说,每 0 毫秒和 0 米(最少)。

好的,“minimum”这个词在这里很关键,但为什么有时位置可能长达 30 多秒都没有更新?我已经计算了一次更新和下一次更新之间的实际时间,而在 WiFi 上,即使我在代码中有 0 和 0 也需要 38 秒。我什至尝试了 1000 毫秒(1 秒),但仍然没有那么频繁地更新。

如何更频繁地进行此更新?为什么会有这样的反应?

谢谢!

【问题讨论】:

    标签: android locationlistener


    【解决方案1】:

    简短的回答是:你不能(让它更频繁地更新)。

    文档表明,如果您将 min_distance 和 min_time 指定为零,您将获得“尽可能频繁的更新”。所以你看到的是“尽可能频繁地”。通常你不会得到更新,除非有什么改变,所以如果你不搬家,你不一定会得到更新。此外,由于您使用的是网络位置而不是 GPS,因此位置的准确性不是那么好,因此您不应该期待如此频繁的更新。

    此外,每个硬件供应商都以不同的方式实现位置提供程序。所以更新的频率是由硬件供应商的实现决定的。

    【讨论】:

    • 你刚才所说的只是证实了我担心的是真的:) 关于 GPS,可以将 2 个 requestLocationUpdates 发送到同一个侦听器吗?一个使用 GPS_PROVIDER,另一个使用 NETWORK_PROVIDER。像这样 lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll); lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, ll);
    • 是的,您可以请求多种不同类型的位置更新。但是,请注意“尽可能频繁地”请求 GPS 更新会“尽可能快地”耗尽电池电量,因此您不应该这样做很长时间,或者除非您知道设备已插入电源。
    • 不仅会消耗电池,还会加热手机:)。
    猜你喜欢
    • 1970-01-01
    • 2012-01-13
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多