LocationManager возвращает старое кэшированное местоположение «Wi-Fi» с текущей меткой времени

Я пытаюсь получить текущее местоположение. Для этого я реализую LocationListener и регистрирую его как для сети, так и для провайдера GPS:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

Затем я блокирую на 30 секунд и использую первое местоположение, которое передается в метод

onLocationChanged()

слушателя с n точность 100 метров или лучше.

В большинстве случаев это работает нормально. Если телефон подключен к какой-либо сети Wi-Fi, определение правильного местоположения с точностью около 50 метров занимает всего секунду. Если Wi-Fi отсутствует, но включен GPS, то, конечно, может потребоваться некоторое время, чтобы определить местоположение.

Иногда, однако, при подключении к Wi-Fi и получении текущего местоположения, некоторые старые (сохраненные в кэше?) Предыдущие местоположения "Wi-Fi" предоставляется - ему может быть 15 минут и 15 километров от текущего местоположения. Проблема в том, что

location.getTime()

возвращает текущее время, поэтому невозможно узнать, что это место старое.

Думаю, мне нужно реализовать более сложное решение - я просто хотел бы знать, почему эти старые "Wi-Fi "местоположения имеют текущую метку времени, а не время, когда оно было первоначально получено.

8
задан Zaheer Ahmed 23 September 2013 в 05:35
поделиться