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