融合位置提供商 - 非固定wifi

时间:2017-05-01 15:19:20

标签: android google-play-services android-location fusedlocationproviderapi android-fusedlocation

我正在开发一个需要跟踪当前位置的应用程序,而且需要很长一段时间。

我决定使用Fused Location Provider API,因为它专为节省电池和提高效率而设计。

经过一段时间的测试,我最终在融合位置提供程序api中遇到了几个突破性问题,甚至在NETWORK_PROVIDER中的软件堆栈中更深层次(我相信它正被融合使用)位置提供者)。

  1. 非固定wifi热点有时会让用户关闭数千公里。 似乎WIFI热点用于三角测量即使它们是便携式设备也是如此。 (绑定/训练wifi /飞机wifi)在这种情况下,设备认为非常准确它正好在错误的位置。人们可能会争辩说,这可以被过滤掉,但是让事情变得更加棘手的是,包括传感器在内的一些魔术正在融合的位置提供商中进行,因此看起来手机正在那些位置被移动。
  2. 有时旧位置会回来我观察到经过2周的不间断位置更新后,旧位置开始重新出现。这尤其奇怪,因为回调中的位置带有新的时间戳。
  3. 将来有时间戳的地点:我花了很多时间来确定这一点,但我也观察到用户通过其位置回调将来一直在接收时间戳。我怀疑用户的设备是否设置为不正确的时间,因为时间戳通常是将来几周。对此的修复是相当明显的,我只是在这里写下来,所以你们可以在过滤掉东西时考虑到它。
  4. 我已经尝试了所有类型的LocationRequest优先级和许多各种参数。非固定WIFI问题仍然存在于所有情况下,并影响设备上的所有应用,包括谷歌自己的应用。

    首先想到的是只是试图忽略通过WIFI三角测量进入的位置锁,但由于无法知道位置来自使用Fused位置api的位置,因此该想法是一个deadend。

    过滤掉这些位置也非常棘手,因为设备经常在错误的位置停留数小时/天并移动到那里。

    我发现已经有一些谷歌错误跟踪器问题已经开启,至少提到问题1.(例如https://issuetracker.google.com/issues/37123060) 这些问题都没有得到解决。

    我正在考虑放弃Fused Location提供商,因为我尝试的所有东西都是deadend。 这导致我提出以下问题:

    1. 没有其他人有这些真正阻塞的问题吗?
    2. 您是否有人有融合位置提供商的替代方案的经验?我已经尝试了https://github.com/mapzen/lost,但我发现一般位置噪音相当大,需要一些工作才能使其达到google的api状态,并且因为它也使用了由提供的WIFI位置谷歌,可能会有同样的问题。
    3. 您是否会回到仅采用GPS的方式,可能会牺牲电池效率?
    4. 由于错误的位置会影响设备上的所有应用,包括谷歌自己的基于位置的应用,为什么这个问题没有被技术巨头优先考虑,他们应该最感兴趣的是能够知道他们的客户目前在哪里是?
    5. 感谢您的帮助。

      修改 现在正在讨论这个问题 https://issuetracker.google.com/issues/37058437

      **编辑(2017年8月8日) 在位置回调中添加了另一个奇怪的发现

2 个答案:

答案 0 :(得分:0)

首先,您需要停止将位置视为单个坐标。没有什么能帮到你。位置是概率字段。即使使用GPS,它所提供的位置也具有以米为单位的精度。用户有67%的可能性在它给你的位置的许多米范围内。这意味着他们没有1/3的机会。有时差异很大 - 如果你整夜运行gps,你会得到一些数百米的修复。你只需处理这个问题。

其次 - 融合是妥协。它的电池电量低于GPS,但精度较低。它足以满足大多数用途。它对您来说可能是也可能不够好。真正的问题是你真的需要超精确,并为你的用户增加价值吗?位置上的偶然错误值得耗尽他们的手机吗?这个答案根据您需要位置数据的频率而变化 - 如果您一直需要它,答案更可能是电池是个坏主意。

任何位置跟踪方法都存在问题。你只需要决定使用哪个是最不痛苦的。这是部分列表:

GPS-高精度,高电池使用,高启动时间,不在室内工作,政府可以降低准确性

信标 - 极高的准确度,需要蓝牙,只能在特定区域工作,需要外部硬件,可能被第三方欺骗(将他的信标ID设置为你的)

基于网络 - 低精度,低资源要求,如果在隔离区域(设置假wifi网络SSID)可能被第三方欺骗

Fused-使用gps和netork数据的组合。所以你有各自的问题。

答案 1 :(得分:0)

我认为应该理解精确度和电池消耗之间存在权衡。但这闻起来更像是一个臭虫。这就是为什么我这样说的一个例子:当我重新连接到我的家庭WiFi时,我的手机非常清楚我不再在檀香山,因为我在达拉斯,波士顿和其他地方的回程中广泛使用它,包括使用谷歌地图让我到中间位置。然而,不知何故,谷歌数据库最终为我的家庭WiFi提供了虚假的位置檀香山,以便当其他人连接到我的家庭WiFi时,他们开始零星地获取檀香山的天气更新!现在如果我的手机一直处于飞行模式,这会更有意义。但即便如此,压倒性的证据仍然是我的家庭WiFi就在这里,一部手机暂时报告错误的位置不应该改变它。