我正在尝试使用
检索位置mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
当我连接到Wifi时,没有问题,但是当我断开Wifi并让4G确定位置时,我没有得到gps修复......
事情是我通过4G接收互联网,所以我不明白为什么!
有什么想法吗?
答案 0 :(得分:3)
我认为这里的问题是Google位置服务,AKA"网络"位置,在很大程度上依赖于Wi-Fi网络来确定位置。
从蜂窝网络获取位置可能不稳定,尤其取决于您所处的位置。如果你在一个城市的市中心区域,周围有很多手机信号塔,所以三角测量可以比你在一个不太密集的区域更好地确定你的位置。
文档中没有明确说明,但看起来使用PRIORITY_BALANCED_POWER_ACCURACY
可能会使用"被动"使用GPS无线电,这意味着如果另一个应用程序要求进行位置回调,它只会从GPS无线电中提供数据,因此您基本上可以回到该请求,并且您的应用程序不会因任何电池消耗而受到指责即使你得到位置数据。
文档说明:
在这两个极端之间是一个非常常见的用例,其中 应用程序肯定希望在指定的接收更新 间隔,并且可以在可用时更快地接收它们,但仍然需要 低功率影响。这些应用应该考虑 PRIORITY_BALANCED_POWER_ACCURACY结合更快 setFastestInterval(long)(例如1分钟)和一个较慢的 setInterval(long)(例如60分钟)。他们只会被分配 由setInterval(long)设置的间隔的权力责备,但仍然可以 接收由其他应用程序触发的位置,速率最高为 setFastestInterval(长)。这种请求方式适合 许多位置感知应用程序,包括后台使用。是的 如果你执行,小心也要限制setFastestInterval(long) 收到更新后的重量级工作 - 例如使用 网络
也请参阅此帖:PRIORITY_LOW_POWER vs PRIORITY_BALANCED_POWER_ACCURACY for google play service v2