Android: как собирать значения датчиков за фиксированный период времени?

Хочу собрать ок. 5 секунд значения акселерометра. Каков правильный способ сделать это?

Я попробовал это, внедрив AsyncTask, который регистрируется и отменяет регистрацию в диспетчере датчиков для акселерометра, а затем спит в течение 5 секунд. Но в течение этих 5 секунд сна метод onSensorChanged не вызывается: D...

Мотивация моего поиска следующая: чтобы откалибровать мой акселерометр, я хочу собрать в течение нескольких секунд значения датчика (пока телефон лежит на полу), а затем получить смещение, вычислив средние значения...

Я ценю любой намек!


person user1086105    schedule 12.04.2012    source источник


Ответы (1)


Предполагая, что вы запускаете свои датчики в onResume:

/**
 * start sensors
 */
public void onResume() {
    mSensorManager.registerListener(mListener, mSensorAcceleration, SensorManager.SENSOR_DELAY_GAME);
    mSensorManager.registerListener(mListener, mSensorMagnetic, SensorManager.SENSOR_DELAY_GAME);
    Handler h = new Handler();
    h.postDelayed(new Runnable() {

        @Override
        public void run() {
        //    do stuff with sensor values
            mSensorManager.unregisterListener(mListener);               
        }
    }, 5000);
...
person Renard    schedule 12.04.2012