传感器时间戳计算错误



有许多问题与理解传感器事件中的时间戳有关
我尝试了自己的方法,如下所示,以获得纳秒的真实事件时间:
(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));

得到的是错误的时间,大约半小时后的同一日期
因为不是一个小时的错误,我认为它与时区无关。

希望看到建议
感谢

问题是由ROM错误引起的
这是一个非官方ROM,具有快速重启功能
它重置系统启动时间,但不重置事件时间戳
当系统快速重启后,事件时间戳不是0/1这个小数字,而是自上次真正/硬重启以来的纳秒。

最新更新