Я пишу код Android для проверки библиотек геолокации и столкнулся с проблемой с эмулятором Android. Я создаю LocationListener и, когда вызывается LocationListener :: onLocationChanged, я проверяю время переданного объекта Location, чтобы сравнить его с текущим временем. Я использую окно управления эмулятором DDMS, чтобы изменить местоположение, чтобы вызвать вызов onLocationChanged. Вот код, который я использую в методе onLocationChanged для сравнения переданного времени местоположения с текущим временем («location» - это местоположение, которое передается в onLocationChanged):
float accuracy = location.getAccuracy();
long curTime = System.currentTimeMillis();
float lateness = (curTime - location.getTime()) / 1000;
Проблема, с которой я столкнулся, заключается в том, что время, которое я получаю из местоположения с помощью getTime, всегда сильно отличается от текущего времени (curTime), хотя время между тем, когда я устанавливаю местоположение с помощью DDMS, и временем, когда я смотрю на него в отладчик - дело секунд. Обычно разница составляет несколько часов, а иногда время от местоположения на несколько часов опережает текущее время (поэтому время определения местоположения наступит через несколько часов?!?). Кроме того, разница во времени не является последовательной. В документации для вызова Location :: getTime и System.currentTimeMillies говорится, что возвращаемое время дается в миллисекундах с 1 января 1970 года по Гринвичу, поэтому не должно быть проблем с использованием разных часовых поясов. Это известная ошибка с эмулятором или я что-то не так делаю? Спасибо!