Временно включить режим местоположения высокой точности - PullRequest
0 голосов
/ 25 мая 2018

В приложении я использую FusedLocationProviderClient

mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);

Мой запрос о местоположении

    LocationRequest mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
    mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

Когда режим определения местоположения устройств находится в режиме только GPS, этот запрос, похоже, не получает никакого местоположенияобновления.

Я могу сделать запрос настроек местоположения и попросить пользователя изменить режим местоположения на HighAccuracy для поддержки запроса местоположения.

    LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
    builder.addLocationRequest(mLocationRequest);
    mLocationSettingsRequest = builder.build();

Он покажет пользователю диалоговое окно и попросит его изменить режим местоположения, но это изменение постоянно меняет режим расположения устройства на высокую точность.Даже после закрытия приложения изменения остаются прежними и потребляют battary.

Есть ли способ изменить режим местоположения только для приложения?Например, когда приложение работает, оно может находиться в режиме HighAccuracy, а когда приложение закрывается, оно возвращается к тому режиму, в котором оно было до этого.

1 Ответ

0 голосов
/ 07 июня 2018

необходимо учитывать жизненный цикл активности , чтобы изменить конфигурацию на предыдущее состояние, которое можно получить, прочитав конфигурацию с помощью Настройки клиента перед переключением режима.и оставь его для возврата позже.наиболее подходящим для отмены настроек может быть метод onDestroy(), поскольку он всегда будет конечным последним вызовом (если батарея не отключается).

enter image description here

Activity должен реализовывать onStart(), onResume(), onPause(), onStop(), onDestroy().в документации SDK есть даже один вполне подходящий пример:

Обработка жизненных циклов с компонентами, поддерживающими жизненный цикл .

...