2012-03-30 3 views
1

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

+0

Устаревшее Используйте 'SensorEventListener' вместо этого. [Android: Я хочу, чтобы поколебать его] [1] [1]: http://stackoverflow.com/questions/2317428/android-i-want-to-shake-it – msysmilu

ответ

6

Отъезд Javadocs для SensorManager.registerListener()

Вам необходимо пройти в одном из 4-х постоянных, вы не можете ввести произвольное значение, как вы пытаетесь сделать.

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

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

registerListener(this, Accelerometer , SensorManager.SENSOR_DELAY_FASTEST); 

EDIT:Tim.footInMouth() я не видел последнюю часть определения. Фактически вы можете передавать микросекунды.

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

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

Так что вы хотите 1 проба на 50 миллисекунды

microsecond является 1/1000 миллисекунды

Так 1000 микросекунд = 1 milisecond

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

Таким образом, ваш вызов должен быть:

registerListener(this, Accelerometer , 50000); 
+0

Спасибо вы можете предложить мне альтернативное решение? –

+0

Вы видели часть после редактирования? Я думаю, что это решение, которое вы ищете. – FoamyGuy

+0

Спасибо. Вы так быстро! Значит, это означает, что после 50000 микросекунд будет объявлено публичное void onSensorChanged (событие SensorEvent)? Или я ошибаюсь? Все, что я хочу, - хранить каждое значение выборок x, y, z с каждым образцом, имеющим разницу 50000 микросекунд –

Смежные вопросы