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