【问题标题】:Fusionlocationprovider not working without gps in androidFusionlocationprovider 在 android 中没有 gps 就无法工作
【发布时间】:2015-11-24 11:55:52
【问题描述】:

我正在开发 googlemaps 应用程序,我正在使用 google fusion 位置提供程序来查找当前位置,并且我正在尝试 requestlocationupdates,但是当我使用 gps 和 locationrequest 优先级 HIGH_ACCURACY 时我面临的问题,我的电池电量消耗非常快,这就是为什么我想将我的 locationrequest 优先级更改为 BALANCED_POWER 但没有 gps 我无法获得纬度和经度但是在谷歌文档中他们提到没有 gps 也应该可以工作请回复

代码:

_googleApiClient = new GoogleApiClient.Builder(this)
                .addApi(LocationServices.API)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
 _locationRequest = new LocationRequest();
 _locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
  PendingResult<Status> pendingResult = LocationServices.FusedLocationApi.requestLocationUpdates(
                    _googleApiClient, _locationRequest,this);

【问题讨论】:

  • 你能实现你想要的吗?我很好奇它是否对你有用..

标签: android gps location


【解决方案1】:

PRIORITY_BALANCED_POWER_ACCURACY 根据谷歌文档仅获取基于网络的位置。它只需要 ACCESS_COARSE_LOCATION 这意味着它仅基于网络而不是 GPS 获取位置。看看this post

如果您想使用 GPS,您应该选择 HIGH_ACCURACY 位置。根据您对地图的要求,这样做是有意义的。您不应该忘记在不需要时删除位置更新。在你的情况下,我想你应该在你的活动进入后台时停止......可能在 onStop() 或 onPause() 中。阅读Location Strategies 了解更多信息。

【讨论】:

  • 即使您打开 gps,我认为(我在阅读文档后几乎可以肯定)您不会收到任何位置。因此,您要么必须选择频率较低的 HIGH_ACCURACY,要么选择 BALANCED 以获得较低的准确度。或者您可以将两者结合起来 - 在前台您可以使用 HIGH_ACC 准备 LocationRequest,当应用程序进入后台时,您可以使用 BALANCED 准备新的 LocationRequest。如果是 15 分钟一次,我认为它不会消耗太多电池。您是否进行了功率测试以了解您的应用在 HIGH_ACCURACY 和 15 分钟频率下消耗了多少电量。 ???
  • 很好,它帮助了你。您可以投票,这样其他人也可以有信心考虑他们工作的答案。
  • 如果我将位置请求优先级动态更改为 BALANCED,它将起作用还是我应该通过位置设置手动更改它
  • 应启用联络设置。应该为 high_accuracy 和 WiFi 启用 .gps 以实现平衡。保持两者直到它工作,然后你可以试验。创建新请求和 requestLocationUpdates()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
相关资源
最近更新 更多