FusedLocation API - onLocationChanged 未被调用

FusedLocation API - onLocationChanged is not called

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

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

我们收到了来自用户的多个支持请求,他们说没有任何反应,他们只看到加载旋转器。

我们目前强制执行激活的 GPS 提供程序,因此这不是非活动定位服务的问题。

我通过在我们的一部手机上创建用户帐户并启动应用程序成功地重现了这个错误,我注意到没有调用 onLocationChanged

代码通过 LocationServices.FusedLocationApi.requestLocationUpdates,因此它应该提供位置,但它没有

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

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

here 是使用的确切代码的要点(我在第 131 行设置了一个断点,开始调试并到达那里,所以我应该获取位置,但从未调用方法 onLocationChanged

"solution" 如果你想这样称呼它,是告诉用户打开 google 地图,点击 "locate me" 按钮,等到 google 地图找到他们然后再次打开我们的应用程序并向我们报告是否有任何作用

编辑:

更好的是,重构整个事情以完全不使用 google-api-客户端,这看起来像这样:

link(是kotlin什么的,kotlin不错)

编辑 2:我将其从事件总线实现更改为 rx-subject。事件总线真的很脏,如果可能的话,你应该远离它们