Нахождение местоположения, полученного с помощью 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, чтобы получить последнее местоположение, известное провайдеру, проверьте документы здесь.