Ориентировочное время отметки времени сенсора Android

Читаю значение временной метки из данных SensorEvent, но я не могу работать в начале отсчета времени для этих значений. Документация Android просто говорит «Время в наносекундах, в котором произошло событие». Например:

Текущая дата устройства Android, 14 октября 2011 г. 23: 29: 56.421 (GMT + 2)

System.currentTimeMillis * 1000000 (nanosec) = 1318627796431000000 (это нормально)

Sensorevent.timestamp (nanosec) = 67578436328000 = 19 часов 46 мин ????

Можете ли вы мне помочь?

благодаря

Похоже, что с вами связано количество наносекунд с момента запуска операционной системы, также называемое «временем безотказной работы».

Дополнительная информация о проблеме: http://code.google.com/p/android/issues/detail?id=7981

Я должен добавить, что связанный вопрос SensorEvent.timestamp с абсолютной (utc) меткой времени? Имеет дело с той же проблемой, и именно там я нашел ответ.

Я знаю, что это очень старый вопрос, но я также пытаюсь преобразовать SensorEvent.timestamp в SensorEvent.timestamp для человека время. Поэтому я пишу здесь то, что я понял до сих пор, и как я его конвертирую, чтобы получить лучшие решения от вас, ребята. Любые комментарии будут приветствоваться.

Как я понял, SensorEvent.timestamp – это прошедшее время с момента загрузки устройства. Поэтому я должен знать время работы устройства. Поэтому, если есть загрузочная загрузка устройства API, это будет очень просто, но я его не нашел. Поэтому я использую SystemClock.elapsedRealtime() и System.currentTimeMillis() для «оценки» времени работы устройства. Это мой код.

 private long mUptimeMillis; // member variable of the activity or service ... atComponentsStartUp...() { ... /* Call elapsedRealtime() and currentTimeMillis() in a row in order to minimize the time gap */ long elapsedRealtime = SystemClock.elapsedRealtime(); long currentTimeMillis = System.currentTimeMillis(); /* Get an uptime. It assume that elapsedRealtime() and currentTimeMillis() are called at the exact same time. Actually they don't, but, ignore the gap because it is not a significant value. (On my device, it's less than 1 ms) */ mUptimeMillis = (currentTimeMillis - elapsedRealtime); .... } ... public void onSensorChanged(SensorEvent event) { ... eventTimeMillis = ((event.timestamp / 1000000) + mUptimeMillis); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(eventTimeMillis); ... } 

Я думаю, что это работает для приложений, что миллисекундная ошибка времени – это okey. Пожалуйста, оставьте свои идеи.