FusedLocation API-不调用onLocationChanged

Tor*_*ist 6 android fusedlocationproviderapi android-fusedlocation

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

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

我们收到了来自用户的多个支持请求,他们说什么也没有发生,他们只看到加载微调器。

目前,我们正在执行已激活的GPS提供程序,因此这不是无效定位服务的问题。

我设法通过在其中一部手机上创建用户帐户并启动该应用程序来重现该错误,并且我注意到未调用onLocationChanged

代码已经过去了LocationServices.FusedLocationApi.requestLocationUpdates,因此它应该提供位置,但是不提供

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

a)我几乎无法想象用户到目前为止没有使用过Google地图b)告诉他们打开Goog​​le地图来解决我们应用中的问题听起来很奇怪

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

Tor*_*ist 2

如果你想这样称呼它,“解决方案”就是告诉用户打开谷歌地图,点击“定位我”按钮,等到谷歌地图找到它们,然后再次打开我们的应用程序并向我们报告是否做了任何事情

编辑:

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

链接(这是 kotlin,无论如何,kotlin 很好)

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