2016-04-09 8 views
0

Есть много вопросов, связанных с пониманием отметки времени в событии датчика.
Я попробовал свой собственный путь, как следовать, чтобы получить в режиме реального времени событий в нано второй:
(System.currentTimeMillis()-SystemClock.uptimeMillis())*1000000 + event.timestampошибка расчета временной метки датчика

System.currentTimeMillis()-SystemClock.uptimeMillis()
Это, чтобы получить систему времени начала в Millis.

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));

Что такое получить время с ошибкой, тот же днем ​​с потом около получаса.
Потому что не одна часовая ошибка, я предполагаю, что она не связана с часовым поясом.

Надеемся увидеть предложение.
Thank

+0

внезапно ошибка доходит до 20 часов – user3042713

ответ

0

Проблема связана с ошибкой ROM.
Это неофициальное ПЗУ и функция быстрого перезапуска.
Сбрасывает время работы системы, но не отметит время события.
Когда сразу после перезагрузки системы, отметка времени события не равна 0/1 этого небольшого числа, вместо этого это nano second с момента последней реальной/жесткой перезагрузки.