В настоящее время мое приложение использует Карты Google Play Services
speficying:
mMap.setMyLocationEnabled(true);
Я понимаю каждый раз, когда я показываю карту в своем приложении:
- местоположение отображается на карте синей точкой
- значок местоположения отображается в верхней строке
- Если я перейду в Настройки/Местоположение телефона, мое приложение будет указано как "Высокое потребление батареи"
Тем не менее, я вижу, что есть приложения, которые используют Карты и все еще отображают голубую точку местоположения, но значок местоположения не отображается в верхнем баре, и их использование батареи низкое.
Мое приложение в настоящее время предоставляет оба разрешения:
-
android.permission.ACCESS_COARSE_LOCATION
-
android.permission.ACCESS_FINE_LOCATION
Мой вопрос:
как я могу показать местоположение синей точки с низким уровнем использования батареи?
Можно ли указать точность/использование батареи по коду?
UPDATE
На самом деле я понял, что способ сделать это - использовать 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 игнорирует эти критерии низкой мощности!