Java 计算时差的最可靠方法

Java 计算时差的最可靠方法,java,android,time,accelerometer,Java,Android,Time,Accelerometer,我有加速计读数,每次加速计值发生变化时,都会通过onSensorChanged()函数进行更新。然后我创建一个文件,在其中我在每一行上写入加速计读数(X,Y,Z)轴,但也希望添加每次读数之间的时间间隔。我在某个地方读到,使用System.currentTimeMillis()不是一条好路。尽可能准确地执行此操作的最佳方法是什么?使用标准Java API调用: System.nanoTime 然后简单地在时间之间做一个差异。我建议使用SensorEvent字段: public long time

我有加速计读数,每次加速计值发生变化时,都会通过onSensorChanged()函数进行更新。然后我创建一个文件,在其中我在每一行上写入加速计读数(X,Y,Z)轴,但也希望添加每次读数之间的时间间隔。我在某个地方读到,使用System.currentTimeMillis()不是一条好路。尽可能准确地执行此操作的最佳方法是什么?

使用标准Java API调用:

System.nanoTime
然后简单地在时间之间做一个差异。

我建议使用SensorEvent字段:

public long timestamp

Since: API Level 3
The time in nanosecond at which the event happened
只需记住最后一个值,然后计算差值,这种方法就是专为此用例设计的

Stopwatch stopwatch = new Stopwatch().start();
doSomething();
stopwatch.stop(); // optional

long millis = stopwatch.elapsedMillis();

log.info("that took: " + stopwatch); // formatted string like "12.3 ms"

计算上一个和当前的时间戳会给我一些值,比如200012204。最后5个时间戳读数为
28194580521720 28194780961176 281949806668203 28195180649892 28195380662101
,因为您可以看到第6个数字始终更改为1,3,5,7和9。我假设每个时间戳之间有20毫秒的差异?它变化很大,取决于您运行的确切架构…对于Android来说,这可能取决于手机。