2012-01-31 2 views
2

У меня есть показания акселерометра, которые обновляются с помощью функции onSensorChanged() каждый раз при изменении значений акселерометра. Затем я создаю файл, в котором я записываю оси акселерометра (X, Y, Z) на каждой строке, но также хотел бы добавить временные интервалы между каждым чтением. Я где-то читал, что использование System.currentTimeMillis() - это не путь. Каким будет лучший способ сделать это как можно точнее?Самый надежный способ расчета разницы во времени

ответ

3

Я предлагаю использовать timestamp поле SensorEvent:

public long timestamp 

Since: API Level 3 
The time in nanosecond at which the event happened 

Только помните, последнее значение и вычислить разницу, что путь

+0

Большого спасибо :) – unleashed

+0

Расчет предыдущее и текущее время дает мне значения, такому как 200012204. Последнее 5 чтения меток времени является '28194580521720 28194780961176 28194980668203 28195180649892 28195380662101', как вы можете видеть шестой разряд всегда меняется 1,3,5,7 и 9. Предполагаю, что разница между каждой меткой времени составляет 20 мс? – unleashed

+1

Он варьируется _very_ широко, в зависимости от конкретной архитектуры, на которой вы работаете ... что, вероятно, зависит от телефона, для Android. –

1

Используйте API вызова Стандартный Java:

System.nanoTime 

Тогда просто сделать разницу между временем.

1

Guava'sStopwatch предназначен именно для этого случая использования.

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

long millis = stopwatch.elapsedMillis(); 

log.info("that took: " + stopwatch); // formatted string like "12.3 ms" 
Смежные вопросы