Ниже приведен пример кода, который я использую:
private final SensorManager mSensorManager;
private final Sensor mAccelerometer;
private long prevTime=0;
public SensorActivity() {
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_FASTEST);
}
Я требую разницу последующих значений системной метки времени в функции OnSensorChanged (событие SensorEvent) после запуска датчика .
public void onSensorChanged(SensorEvent event) {
long systemTimeStamp= SystemClock.elapsedRealtimeNanos();
long timeDifference = (systemTimeStamp - prevTime) / 1000000; //msec
Log.e("PROBLEM",timeDifference);
prevTime=systemTimeStamp;
}
Вышеуказанная разница становится равной 0 много раз в SENSOR_DELAY_FASTEST //Почему??
Разница последующих временных меток равна 0, но, согласно определению, она должна сообщать время в наносекундах, поэтому при 5 микросекундах разница не должна быть равна нулю. Как я могу получить ненулевую разницу или есть ли другой способ получить разницу системных отметок времени с точностью до 5 микросекунд.
Обратите внимание, что event.timestamp сообщает временные метки датчика, но мне нужны временные метки системы в OnSensorChanged (событие SensorEvent), чтобы измерить, насколько точны временные метки датчика, сравнивая их с фактическими системными временными метками.