我正在尝试尽可能准确地记录不同传感器事件的时间戳。通常,我只会使用sensorEvent.timstamp
,但是我注意到当我打电话给SystemClock.elapsedRealtimeNanos()
时会得到不同的读数。
例如:
Log.i("Time1", String.valueOf(sensorEvent.timestamp));
// 939,704,514,316,244
Log.i("Time2", String.valueOf(SystemClock.elapsedRealtimeNanos()));
// 939,704,545,239,071
// I added commas for readability but they aren't actually printed.
如您所见,它们之间的距离为30922827ns或30.9ms,这在称为200ms的传感器事件中相当可观。
所以我的问题是:我应该使用哪个时间戳与其他传感器事件尽可能准确地进行比较?
也可以添加。我将在以下代码块中记录时间戳。
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
int sensorType = sensorEvent.sensor.getType();
switch (sensorType) {
case Sensor.TYPE_GYROSCOPE:
//sensorEvent.timestamp
// OR
//SystemClock.elapsedRealtimeNanos()
break;
case Sensor.TYPE_ACCELEROMETER:
//sensorEvent.timestamp
// OR
//SystemClock.elapsedRealtimeNanos()
break;
...
}
}