我们应用中的流程如下:
- 显示一个全屏 Activity ,向用户解释为什么我们需要 GPS 位置
- 获取GPS权限
- 显示加载微调器
- 获取第一个地理位置
- 将第一个位置发送到服务器
- 从服务器加载相关数据
- 隐藏加载微调器
我们收到了来自用户的多个支持请求,他们说没有任何反应,他们只看到加载微调器。
我们目前强制执行激活的 GPS 提供程序,因此这不是不活动定位服务的问题。
我已经通过在我们的一部手机上创建用户帐户并启动应用程序来重现该错误,并且我注意到没有调用 onLocationChanged
代码通过 LocationServices.FusedLocationApi.requestLocationUpdates
,所以它应该提供位置,但它没有
我知道我过去通过打开谷歌地图解决了这个问题,但是
a) 我很难想象到目前为止用户还没有使用谷歌地图 b) 告诉他们打开谷歌地图来解决我们应用程序中的问题听起来很奇怪
here是使用的确切代码的要点(我在第 131 行设置断点,开始调试并到达那里,所以我应该获取位置,但从未调用方法 onLocationChanged
最佳答案
“解决方案”,如果你想这样调用它,就是告诉用户打开谷歌地图,点击“定位我”按钮,等到谷歌地图找到他们,然后再次打开我们的应用程序并向我们报告是否什么都做了
编辑:
更好的是,将整个事情重构为根本不使用 google-api-client,看起来像这样:
link (这是 Kotlin ,不管怎样, Kotlin 很好)
编辑 2:我将其从事件总线实现更改为 rx-subject。事件总线真的很脏,如果可能的话,你应该远离它们
关于android - FusedLocation API - 未调用 onLocationChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44105614/