我的应用目前正在使用 Maps byGoogle Play Services
指定:
mMap.setMyLocationEnabled(true);
我意识到每次在我的应用程序中显示地图时:
- 该位置在地图上用蓝点表示
- 位置图标显示在顶部栏中
- 如果我进入手机的设置/位置,我的应用被报告为“高耗电量”
但是,我可以看到有使用地图的应用程序仍然显示位置蓝点,但位置图标没有出现在顶部栏中,并且它们的电池使用量很低。
我的应用目前授予这两种权限:
android.permission.ACCESS_COARSE_LOCATION
android.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 忽略了这些低功耗标准!