Android: ubicación de Google Maps con bajo uso de batería
Mi aplicación está usando Maps porGoogle Play Services
speficying:
mMap.setMyLocationEnabled(true);
Me doy cuenta de que cada vez que visualizo el mapa en mi aplicación:
la ubicación se indica en el mapa con un punto azulse muestra un icono de ubicación en la barra superiorsi entro en Configuración / Ubicación del teléfono, mi aplicación se informa como "Uso de batería alta"Sin embargo, puedo ver que hay aplicaciones que usan Mapas y aún muestran el punto azul de ubicación, pero el ícono de ubicación no aparece en la barra superior y su uso de batería es bajo.
Mi aplicación actualmente otorga ambos permisos:
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
Mi pregunta es:
¿Cómo puedo mostrar la ubicación del punto azul con poco uso de batería?
¿Es posible especificar la precisión / uso de la batería por código?
ACTUALIZAR
En realidad, me di cuenta de que la forma de hacerlo es usar elGoogleApiClient
'sFusedLocationApi
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
He configurado el GoogleApiClient dentro de mi Actividad, llamando:
GoogleApiClient.connect()
en el inicio de la actividadGoogleApiClient.disconnect()
en la parada de la actividadsobre elonConnected
devolución de llamada establecí los criterios para las actualizaciones de ubicación: intervalo más rápido de 1 minuto con baja prioridad de energía:
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
}
He probado que GoogleApiClient se conecta correctamente al inicio, pero por alguna razón cada vez que visito el fragmento con el MapView incrustado, sigo recibiendo eluso elevado de la batería para mi aplicación en la pantalla Configuración / Ubicación!
¡Parece que MapView está ignorando estos criterios de baja potencia!