使用 Fused 提供程序更新位置的间隔

Posted

技术标签:

【中文标题】使用 Fused 提供程序更新位置的间隔【英文标题】:Interval of updating location with Fused provider 【发布时间】:2016-10-31 18:39:32 【问题描述】:

我面临一个问题。我正在使用 Fused Location Provider,在文档中它写道,当我们使用高优先级时,我们将每 5 秒获得一次更新,但我看过一些教程,那个人写了这个函数

protected void createLocationRequest()
    mLocationRequest=new LocationRequest();
    mLocationRequest.setInterval(INTERVAL);
    mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

此 INTERVAL 为 10 秒。这是否意味着我将每 10 秒或 5 秒获得更新(就像它在文档中写的使用高优先级一样)? 提前致谢。

【问题讨论】:

【参考方案1】:

间隔 10 秒:您将大约每 10 秒收到一次位置更新。但它是近似值,它给出的位置可能少于或多于 10 秒。

最快间隔:该值必须小于间隔值。好的,我们知道位置更新将在 10 秒左右(或多或少)到来。 fastest 在这里的意思是,我不想接收低于这个值的位置更新(最快间隔)

假设你有以下参数

间隔:10 秒 最快间隔:5 秒

可能的结果可能如下(假设)

01:00:00(请求)

01:00:12(位置更新,12 秒)

01:00:22(位置更新,10 秒)

01:00:30(位置更新,8 秒)

01:00:38(位置更新,8 秒)

01:00:46(位置更新,8 秒)

01:00:52(位置更新,6 秒)

01:00:59(位置更新,7 秒)

...

结果:您收到了大约 10 秒 且超过 5 秒

的位置更新

【讨论】:

谢谢兄弟,请再问一个问题...是否有任何地方写过我们第一次获取位置需要多少秒(例如,第一次启动应用程序时)?这是否取决于区间和 FastestInterval? 一般会倾向于这些参数(在区间附近并且大于最快的值)。但在某些情况下,它可能会改变。例如,如果您住在建筑物或封闭区域,则此时间可能需要很长时间。 那么在 Fused Provider 中兑现呢?有了这个,我的代码位置每 10 秒更新一次,但是兑现的位置在哪里? 你说的兑现是什么意思?可能是缓存? 是的,我的意思是当我阅读一些关于 gps、网络提供商的文章时(在我找到 Fused 提供商之前)我读到当启动 android 位置时,我们拥有的第一个信息是兑现 gps 或兑现网络提供者,经过一段时间后,我们终于获得了当前位置....这个过程在 Fused 提供者中是否相同?

以上是关于使用 Fused 提供程序更新位置的间隔的主要内容,如果未能解决你的问题,请参考以下文章

Android Fused location api,当我在家时提供错误的位置更新并锁定到我的 WiFi 网络

在 Fused Location 的帮助下请求位置更新时应用程序崩溃

Fused Location Provider - 获得高精度

Android Fused Location 提供商迷路了

Fused Location Provider:有没有办法检查位置更新是不是失败?

Fused Location Provider 无故停止