Ошибка вычисления метки времени датчика
Есть много вопросов, касающихся понимания отметки времени в событии датчика.
Я попробовал свой собственный путь, как следует, чтобы получить реальное время события в нано секундах:(System.currentTimeMillis()-SystemClock.uptimeMillis() )*1000000 + event.timestamp
System.currentTimeMillis()-SystemClock.uptimeMillis()
Это чтобы получить время запуска системы в миллис.
System.currentTimeMillis()-SystemClock.uptimeMillis()*1000000
Сделать это в нано секунду.
Вся идея - время запуска системы + время работы до события.
Я использую следующее для отладки:Calendar cl = Calendar.getInstance(TimeZone.getTimeZone("Hongkong"));
cl.setTimeInMillis( ( (System.currentTimeMillis()-SystemClock.uptimeMillis() )*1000000 + event.timestamp) /1000000);
Log.v(LOGTAG, "event happened at: " + cl.get(Calendar.DAY_OF_MONTH) + ":"
+ (cl.get(Calendar.MONTH)+1) + ":" + cl.get(Calendar.YEAR) + " "
+ cl.get(Calendar.HOUR_OF_DAY) + ":" + cl.get(Calendar.MINUTE) + ":"
+ cl.get(Calendar.SECOND));
Получается время с ошибкой, та же дата, примерно с полчаса спустя.
Потому что не ошибка одного часа, я предполагаю, что это не связано с часовым поясом.
Надеюсь увидеть предложение.
Поблагодарить
1 ответ
Проблема связана с ошибкой ПЗУ.
Это неофициальное ПЗУ с функцией быстрого перезапуска.
Сбрасывает время работы системы, но не метку времени события.
Когда сразу после быстрого перезапуска системы отметка времени события не равна 0/1 этого вида небольшого числа, вместо этого это наносекунда с момента последней реальной / сложной перезагрузки.