仅收集特定时间段内的传感器数据

Collect sensor data only for a specific period of time

我正在尝试收集特定时间段内 android 上的加速度计数据。到目前为止,我设法找到了每 X 秒收集一次数据的解决方案,但是我需要的是这样的:

调用一个方法 -> 收集 X 秒的数据 -> 计算各种东西 -> Return 结果。

目前我的计算是在 onSensorChanged(SensorEvent 事件)中完成的。如何实现我想要的行为?

一个简单的方法是设置一个 HandlerThread (http://developer.android.com/reference/android/os/HandlerThread.html) 来收集您的加速度计数据(同时从主循环程序中删除您的计算)。然后,您可以 post 在其上运行可运行程序,在所需时间后将其关闭。

final Handler handler = new Handler(mSensorEventsThread.getLooper());
mSensorManager.registerListener(mSensorEventListener, mAccelerometerSensor, SensorManager.SENSOR_DELAY_UI, handler);
handler.postDelayed(new Runnable () {
    public void run () {
        mSensorManager.unregisterListener(mSensorEventListener);
        mSensorEventsThread.quitSafely();
    }
}, YourTimeOut);