【发布时间】:2015-03-22 09:34:30
【问题描述】:
我的应用目前正在使用 Google Play Services 的地图
具体说明:
mMap.setMyLocationEnabled(true);
我意识到每次在我的应用中显示地图时:
- 位置在地图上用蓝点表示
- 位置图标显示在顶部栏中
- 如果我进入手机的设置/位置,我的应用被报告为“耗电量大”
但是,我可以看到有些应用使用地图并仍然显示位置蓝点,但位置图标没有出现在顶部栏中,并且它们的电池使用量很低。
我的应用目前授予这两种权限:
android.permission.ACCESS_COARSE_LOCATIONandroid.permission.ACCESS_FINE_LOCATION
我的问题是:
如何在电量不足的情况下显示位置蓝点?
是否可以通过代码指定精度/电池使用情况?
更新
其实我意识到这样做的方法是使用GoogleApiClient的FusedLocationApi
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
我已经在我的 Activity 中配置了 GoogleApiClient,调用:
-
GoogleApiClient.connect()活动开始 -
GoogleApiClient.disconnect()活动结束
在onConnected 回调中,我设置了位置更新的标准:1 分钟的最快间隔,低功耗优先:
private static final LocationRequest REQUEST = LocationRequest.create()
.setFastestInterval(60000) // in milliseconds
.setInterval(180000) // in milliseconds
.setPriority(LocationRequest.PRIORITY_LOW_POWER);
@Override
public void onConnected(Bundle bundle) {
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient,
REQUEST,
this); // LocationListener
}
我已经测试了 GoogleApiClient 在启动时是否正确连接,但由于某些原因,每当我访问带有嵌入式 MapView 的片段时,我仍然会在设置/位置上为我的应用程序高耗电量屏幕!
似乎 MapView 忽略了这些低功耗标准!
【问题讨论】:
-
你不需要这两个权限,选择其中一个
-
我可以看到应用程序请求了这两个权限,并且仍然能够在电池使用量低的情况下显示位置蓝点。我想知道是否有一种方法可以在代码中以编程方式设置准确性。
-
那你的问题是什么?
-
我的问题是如何在电池电量不足的情况下仍然显示位置
-
所以请编辑您的问题
标签: android google-maps google-play-services google-maps-android-api-2 location-services