Как сохранить LocationManager в фоновом режиме?

#java #android #google-maps

#java #Android #google-карты

Вопрос:

Я пытаюсь написать приложение для отслеживания, которое должно получать данные о местоположении и представлять их на карте. Приложение работает нормально, когда оно отображается на экране, но когда оно выключено или телефон заблокирован, оно не будет получать обновления и местоположение. Что я могу сделать, чтобы он продолжал обновляться, даже когда телефон заблокирован?

 locationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);

...

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2500,5, locationListenerGPS);

...

LocationListener locationListenerGPS = new LocationListener() {
    @Override
    public void onLocationChanged(android.location.Location location) {

        LatLongLastKnownPos = LatLongCurrentPos;
        LatLongCurrentPos = new LatLng(location.getLatitude(), location.getLongitude());
        if ( isMapReady ) { updateMap(); }

    }


    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

    @Override
    public void onProviderDisabled(String provider) {
    }
};
  

Комментарии:

1. developer.android.com/about/versions/oreo /… ? Последние версии Android стали очень требовательными к постоянным обновлениям местоположения. В Android 10 и выше для этого есть специальное разрешение, но в целом оно не одобряется. Поскольку это такая угроза конфиденциальности, существует вероятность того, что Android полностью запретит его в будущем.

2. Спасибо, я постараюсь это реализовать.

3. может быть, какой-то startForegroundService() может быть хорошей идеей?