Я знаю, что это очень старый вопрос, но я также борюсь за преобразование 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);
...
}
Я думаю, что это работает для приложений, когда ошибка в миллисекундах является окей. Пожалуйста, оставьте свои идеи.