我已经测试了一个使用Android Geofencing API来跟踪进入/退出事件的应用程序,已经有好几个月了。大约99%的时间它都可以正常工作,但是在某些情况下,地理围栏根本不会触发。
此不能是由于我的应用程序无法保持地理围栏加载而导致的问题,因为每当围栏触发失败时,打开一个完全独立的GPS应用程序(例如Google地图)会立即导致我的应用程序触发了失败的地理围栏事件。
正如我所说,地理围栏在99%的时间内都能正常工作,而另外1%的人仅打开另一个gps应用程序便立即触发围栏。我正在尝试找出可以消除失败的1%的方法,希望该方法缺少不断轮询的位置(这使得地理围栏api毫无意义)。
更新:(有限的测试样本大小为1)在运行Android Oreo的设备上,这个问题似乎加剧了,除非启动辅助gps应用程序,否则地理围栏永远不会触发...
答案 0 :(得分:0)
我不知道这是否对任何人都有帮助,但是从Android O开始的背景限制,地理围栏就如您所描述的那样工作,只有打开获取用户当前位置的应用程序才会触发地理围栏。
您可以创建一个Foreground服务,并从“融合的位置提供程序”中轮询该位置,以使地理围栏真正起作用。
我希望其他人找到更好的解决方案。