Запросить обновления местоположения из фона на Android? - PullRequest
0 голосов
/ 31 марта 2019

Я хотел бы реализовать приложение отслеживания, которое запрашивает текущую позицию пользователя каждые 3 минуты.Приложение должно работать в фоновом режиме (также, когда приложение закрыто).В настоящее время я пытаюсь использовать WorkManager для этого.К сожалению, я не получаю позицию GPS (Сообщение о тосте), когда приложение закрыто.

Мой код:

public class LocationWorker extends Worker {
private FusedLocationProviderClient client;

public LocationWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
    super(context, workerParams);
}

@NonNull
@Override
public Result doWork() {
    requestLocationUpdates();

    return null;
}

private void requestLocationUpdates() {
    LocationRequest request = new LocationRequest();
    request.setInterval(5  * 1000);
    request.setFastestInterval(5 * 1000);
    request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
     client = LocationServices.getFusedLocationProviderClient(getApplicationContext());
    int permission = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION);
    if (permission == PackageManager.PERMISSION_GRANTED) {
                final LocationCallback locationCallback = new LocationCallback() {
            @Override
            public void onLocationResult(LocationResult locationResult) {
                Toast.makeText(getApplicationContext(),"TEST",Toast.LENGTH_LONG).show();

                Location location = locationResult.getLastLocation();
                if (location != null) {
                    Log.e("LONG", "location update " + location.getLongitude());
                }

            }
        };
        client.requestLocationUpdates(request, locationCallback,Looper.getMainLooper());

    }
}

Любая идея, что я должен делать, чтобы получать обновления местоположения в фоновом режиме, когдаприложение закрыто?И я должен использовать WorkManager или что-то еще лучшее решение?Я также попробовал PeriodicWorkRequest, но у него был минимальный интервал (15 минут).

...