Мое приложение в настоящее время использует Карты от Google 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();
Я настроил 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 игнорирует эти критерии низкого энергопотребления!