Geofences随机无法触发,直到打开另一个GPS应用程序

问题描述 投票:3回答:1

我已经测试了几个月的应用程序,它使用Android Geofencing API来跟踪进入/退出事件。它在大约99%的时间内完美无瑕地工作,但是地理位置根本不会触发随机时间。

这可能不是由于我的应用程序未能加载地理围栏而导致的问题,因为无论何时围栏都无法触发,打开完全独立的GPS应用程序(即谷歌地图)会立即导致我的应用程序触发它未能发生的地理围栏事件。

  • 我正在处理通过BOOT_COMPLETED和location.PROVIDER_CHANGED上的广播接收器重新加载栅栏。
  • 围栏半径相当大,超过1英里。
  • 该应用程序没有进入睡眠或电源管理。
  • 用户和个人测试显示,这绝不是由于手动禁用位置服务。
  • 没有居住,围栏永不过期。

正如我所说,地理围栏在99%的时间内完美无缺,另外1%只是打开另一个gps应用程序会立即触发围栏。我正在试图弄清楚我能做些什么来消除失败的1%,希望能够不断地轮询位置(这使得地理围栏api无论如何都是毫无意义的)。

更新:(有限的测试样本大小为1)在运行Android Oreo的设备上,除非启动辅助gps应用程序,否则此问题似乎已经加剧到地理围栏永远不会触发的程度......

android location background-process geofencing google-location-services
1个回答
0
投票

我不知道这是否会对任何人有所帮助,但是从Android O开始具有背景限制,地理围栏按照您的描述工作,只有打开获取用户当前位置的应用才会触发地理围栏。

您可以创建Foreground服务并从Fused Location Provider轮询该位置,以使Geofences实际工作。

我希望其他人找到更好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.