Отслеживание местоположения в фоновом режиме - PullRequest
0 голосов
/ 03 марта 2020

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

1 Ответ

0 голосов
/ 03 марта 2020

Вы можете использовать что-то подобное

public class GPSService extends Service {

private LocationListener listener;
private LocationManager locationManager;

public IBinder onBind(Intent intent){
    return null;
}

@SuppressLint("MissingPermission")
@Override
public void onCreate() {
    super.onCreate();
    listener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            Intent i = new Intent("location_update");
            i.putExtra("coordinates",location);
            sendBroadcast(i);

        }

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

        }

        @Override
        public void onProviderEnabled(String provider) {

        }

        @Override
        public void onProviderDisabled(String provider) {

            Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(i);
        }
    };
    locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000,0,listener);
}

@Override
public void onDestroy() {
    super.onDestroy();
    if (locationManager != null){
        locationManager.removeUpdates(listener);
    }
}
}

И ретранслировать вещателем

...