我目前正在开发一个Android应用程序。我必须记录加速度传感器事件的事件坐标与事件时间。我得到了传感器事件时间戳,例如“3497855005850”,但是我无法将事件时间戳转换为用户可读的日期时间格式。
如何将SensorEvent时间戳转换为Unix时间戳?
最佳答案
传感器时间戳实际上是正常运行时间的纳秒,而不是系统时间(以纳秒为单位)。参见SensorEvent.timestamp to absolute (utc) timestamp?。
理论上,您可以使用以下命令将传感器时间戳转换为毫秒级的时间:
long timeInMillis = (new Date()).getTime()
+ (sensorEvent.timestamp - System.nanoTime()) / 1000000L;
您甚至可以将
(new Date()).getTime()
调用与两个System.nanoTime()
调用括起来,然后对它们进行平均以更接近实际偏移量。然后,您可以将传感器时间格式化为日期和时间。