有许多问题与理解传感器事件中的时间戳有关
我尝试了自己的方法,如下所示,以获得纳秒的真实事件时间:(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这个小数字,而是自上次真正/硬重启以来的纳秒。