FusedLocation API – onLocationChanged不被调用

我们的应用程序中的流程如下:

  1. 显示全屏活动,向用户解释为什么我们需要GPS位置
  2. 获得GPS的许可
  3. 显示加载微调
  4. 获得第一个地理位置
  5. 发送第一个位置到服务器
  6. 从服务器加载相关数据
  7. 隐藏加载微调器

我们有多个用户的支持请求,说没有任何反应,他们只能看到加载微调。

目前我们正在实施激活的GPS提供商,所以这不是非活动位置服务的问题。

我已经设法通过在我们的手机之一上创建用户帐户并启动应用程序来重现该错误,并且我注意到onLocationChanged未被调用

代码获取过去的LocationServices.FusedLocationApi.requestLocationUpdates ,所以它应该提供位置,但它不

我知道我通过打开谷歌地图解决了这个问题,但是

a)我很难想象用户到目前为止还没有使用谷歌地图b)告诉他们打开谷歌地图来解决我们的应用程序中的问题听起来很奇怪

这里是一个精确的代码使用的要点(我在131行设置断点,开始调试,并得到了,所以我应该得到的位置,但onLocationChanged方法永远不会

“解决方案”,如果你想叫它,是告诉用户打开谷歌地图,点击“定位我”按钮,等到谷歌地图找到他们,然后再次打开我们的应用程序,并报告给我们是否做了什么

编辑:

甚至更好,重构整个事情根本不使用google-api-client,那看起来像这样:

链接 (这是kotlin,不管怎么说,kotlin很好)

编辑2:我将其从事件总线实现改为Rx主题。 巴士真的很脏,如果可能的话,你应该远离他们