Нахождение местоположения, полученного с помощью GPS_Provider и Network_Provider одновременно

Я пытался найти местоположение, полученное GPS_Provider а также Network_Provider для каждых 5 минут и в то же время отметка для двух значений, полученных в любое конкретное время.

Я попытался использовать следующую стратегию

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

// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      // Called when a new location is found by the network location provider.
      makeUseOfNewLocation(location);
    }

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

    public void onProviderEnabled(String provider) {}

    public void onProviderDisabled(String provider) {}
  };

// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 300000, 0, locationListener)
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,300000, 0, locationListener)

Но здесь Менеджер местоположения назовет onLocationChanged() метод слушателя, если время с момента последнего обновления местоположения больше, чем notificationInterval,

Это приносит мне разницу во времени между значениями, сгенерированными GPS_Provider а также Network_Provider через каждые 5 минут. Есть ли способ, чтобы я мог найти место, которое GPS_Provider а также Network_Provider генерировать в то же время штамп.

Пример:

Сейчас: GPS_Provider(длинный, длинный) в 09:35:12, Network_Provider(длинный, длинный) в 09:35:14

Я нуждаюсь: GPS_Provider(длинный, длинный) в 09:35:12, Network_Provider(длинный, длинный) в 09:35:12

1 ответ

Короче нет.
API местоположения не работает синхронно, то есть у вас нет гарантии, когда именно вы получите обновление. Временные рамки, которые вы указываете, указывают максимальный интервал между обновлениями.
Сказав это, вы можете запустить обновления с меньшим интервалом (например, 50 мс) и получить кучу обновлений, отсортировать их по второй метке времени и получить те, которые имеют одинаковое значение.

Обновить


Вы можете использовать метод getLastKnownLocation, чтобы получить последнее местоположение, известное провайдеру, проверьте документы здесь.

Другие вопросы по тегам