Android акселерометр регистрListener - PullRequest
1 голос
/ 30 марта 2012

Я новичок в Android и работаю на акселерометре. Я хочу собрать 20 образцов x, y, z в секунду, для этого я могу использовать следующее? registerListener (прослушиватель SensorEventListener, Sensor sensor, int rate) в интервале int можно использовать 3000000 (микросекунд), чтобы я получал одно значение x, y, z на каждые 3000000 (микросекунд) или 3 секунды, чтобы оно было похоже на registerListener (это Акселерометр, 3000000); и получите 20 образцов x, y, z за 1 секунду. Если я ошибаюсь, может кто-нибудь подсказать мне, как это решить?

1 Ответ

6 голосов
/ 30 марта 2012

Проверьте Javadocs для SensorManager.registerListener ()

Вам нужно передать одну из 4 констант, вы не можете ввести произвольное значение, как пытаетесь сделать.

События датчика скорости доставляются в.Это всего лишь подсказка системе.События могут быть получены быстрее или медленнее, чем указанная скорость.Обычно события принимаются быстрее.Значение должно быть одним из SENSOR_DELAY_NORMAL, SENSOR_DELAY_UI, SENSOR_DELAY_GAME или SENSOR_DELAY_FASTEST или желаемой задержкой между событиями в микросекундах.

, поэтому пример вызова может выглядеть следующим образом:

registerListener(this, Accelerometer , SensorManager.SENSOR_DELAY_FASTEST);

РЕДАКТИРОВАТЬ: Tim.footInMouth () Я не видел последнюю часть определения.Вы можете фактически передать его микросекундами.

Я думаю, что математика для ваших секунд немного отключена

Вы хотите 20 выборок в секунду (1000 миллисекунд)

Итак, вы хотите 1выборка за 50 миллисекунд

A микросекунда равна 1/1000 миллисекунды

Таким образом, 1000 микросекунд = 1 миллисекунда

и 50000 микросекунд = 50 миллисекунд =20 раз в секунду.

Итак, ваш звонок должен быть:

registerListener(this, Accelerometer , 50000);
...