Я пытаюсь получить текущее местоположение. Для этого я реализую LocationListener и регистрирую его как для сети, так и для провайдера GPS:
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
Затем я блокирую на 30 секунд и использую первое местоположение, которое передается в слушателя
onLocationChanged()
метод с точностью до 100 метров или лучше.
В большинстве случаев это работает нормально. Если телефон подключен к какой-либо сети Wi-Fi, требуется всего лишь секунда, чтобы найти правильное местоположение с точностью около 50 метров. Если нет Wi-Fi, но GPS включен, конечно, может потребоваться некоторое время, чтобы найти местоположение.
Иногда, однако, при подключении к Wi-Fi и получении текущего местоположения, предоставляется какое-то старое (кэшированное?) Предыдущее местоположение «Wi-Fi» - оно может быть 15 минут назад и в 15 километрах от текущего местоположения.
Проблема в том, что
location.getTime()
возвращает текущее время - поэтому невозможно знать, что местоположение старое.
Полагаю, мне нужно реализовать более сложное решение - я просто хотел бы знать, почему у этих старых местоположений "Wifi" вместо текущей отметки времени указана текущая временная метка.