Android Location getTime() добавляет 1-дневную ошибку

В настоящее время я использую Samsung Galaxy Tab P1000, и я столкнулся с проблемой, о которой я точно не знаю, возникает ли она на всех смартфонах. При синхронизации GPS каждый раз, когда я получаю location.getTime(); он возвращает фактическую дату плюс 1 день. Я что-то не так делаю или это баг?

Вот код:

@Override
    public void onLocationChanged(Location location) {
        setRealTime(location.getTime()); 
        ...
        data = new Date();
        data.setTime(getRealTime());
    }

А то например сегодня 15:31 16.01 показывает 15:31 17.01

Проблема исключительно в Samsung Galaxy Tab P1000...

Любые идеи?


person Andre Mariano    schedule 16.01.2012    source источник
comment
Вы не показали, что вы делаете или как вы диагностировали проблему. Можете ли вы привести образец того, что и когда возвращается (включая ваш часовой пояс)?   -  person Jon Skeet    schedule 16.01.2012
comment
возможно, что-то не так в ваших собственных функциях. Попробуйте использовать Log.d(checktime, (new Date(location.getTime())).toString() чтобы проверить это?   -  person guinny    schedule 16.01.2012
comment
Сегодня попробую на HTC Desire.   -  person Andre Mariano    schedule 17.01.2012
comment
Блин, тест в HTC Desire работал нормально, показывал правильную дату, а Galaxy Tab показывает текущую дату + 1 день.   -  person Andre Mariano    schedule 17.01.2012


Ответы (1)


Это ошибка високосного года в прошивке Samsung, подтвержденная Samsung. См. Android : устройства Samsung Galaxy Tab и Android 2.2, отображающие дату GPS на 1 день раньше 1 января 2012 г.

Этот ответ показывает некоторый код, который работает вокруг него; короткая версия - использовать NmeaListener вместо LocationListener. И это может исправиться 29 февраля...

person Billy Charlton    schedule 21.01.2012