Есть ли способ получить координаты местоположения только при изменении - PullRequest
0 голосов
/ 13 сентября 2018

Следующие методы используются для запуска и остановки отслеживания местоположения с помощью моего приложения для непрерывного опроса местоположения почти каждую минуту. Я хотел бы захватить местоположение только тогда, когда есть изменение в координатах. Мне интересно, есть ли какой-либо метод, который будет делать сравнение и получать местоположение, когда есть изменение. Я попытался вручную сравнить координаты, которые замедляют запросы. Пожалуйста, сообщите.

public void stopTracking() {
        if (time != null) {
            time.cancel();
        }
        time = null;
        LocationManager.getLocationManager().setLocationListener(null);
    }

    public void startTracking() {
        if (time != null) {
            stopTracking();
        }
        if (Preferences.get("LocationTracking", true)) {
            long delay = Server.instance.getLoctionPollingIntervalMillis();
            LocationManager.getLocationManager().setLocationListener(this,
                    new LocationRequest(LocationRequest.PRIORITY_LOW_ACCUARCY, delay));
            time = new Timer();
            time.schedule(new TimerTask() {
                @Override
                public void run() {
                    if (lastLocation != null) {
                        double lat = (double) lastLocation.getLatitude();
                        double lot = (double) lastLocation.getLongitude();
                        Server.instance.updateLocationInServer(lat, lot, System.currentTimeMillis(), true);
                    }
                }
            }, 30000, delay);
        }
    }

1 Ответ

0 голосов
/ 14 сентября 2018

Удалите код таймера и запишите обновление сервера в классе LocationRequest, который вызывается слушателем. Я бы также предложил добавить порог обновления, поскольку некоторые реализации могут обновлять вас с очень высокой частотой и при движении, что очень хорошо.

...