我正在尝试使用
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
当我连接到 Wifi 时,没有问题,但是当我断开 Wifi 并让 4G 确定位置时,我没有得到 gps 修复...
问题是我通过4G上网,所以我不明白为什么!
任何想法?
我认为这里的问题是谷歌位置服务,又名“网络”位置,严重依赖 Wi-Fi 网络来确定位置。
从蜂窝网络获取位置可能很不稳定,尤其是取决于您所在的位置。如果您在城市的市中心,周围有很多手机信号塔,因此三角测量可以更好地确定您的位置,而不是在人口密度较低的地区。
文档中并没有真正明确说明,但看起来 usingPRIORITY_BALANCED_POWER_ACCURACY
可能使用 GPS 无线电的“被动”使用,这意味着如果另一个应用程序请求位置回调,它只会给你来自 GPS 无线电的数据,所以你基本上是小猪-回到那个请求,即使你获得了位置数据,你的应用也不会因为任何电池消耗而受到指责。
该文档指出:
在这两个极端之间是一个非常常见的用例,其中应用程序肯定希望以指定的时间间隔接收更新,并且可以在可用时更快地接收它们,但仍然希望低功耗影响。这些应用程序应考虑将 PRIORITY_BALANCED_POWER_ACCURACY 与更快的 setFastestInterval(long)(例如 1 分钟)和更慢的 setInterval(long)(例如 60 分钟)结合使用。它们只会在 setInterval(long) 设置的时间间隔内被分配电源责任,但仍可以接收由其他应用程序以高达 setFastestInterval(long) 的速率触发的位置。这种请求风格适用于许多位置感知应用程序,包括后台使用。
另请参阅此帖子:PRIORITY_LOW_POWER vs PRIORITY_BALANCED_POWER_ACCURACY 用于 google play service v2