写入加速度计数据

时间:2018-07-09 06:38:10

标签: android accelerometer

我希望我的应用程序在后台运行,并在文件中写入一个值。我有按下后退按钮的代码,但是它错过了几个要写入文件的值。我在MainActivity的OnCreate()方法中有以下代码。

    mHandler = new Handler();

        runnable = new Runnable() {
            @Override
            public void run() {
//                sensorManager.registerListener(MainActivity.this, accel,
//                        SensorManager.SENSOR_DELAY_FASTEST);
                mHandler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
//                        sensorManager.unregisterListener(MainActivity.this);
                        firstValueInInterval=true;
                        mHandler.postDelayed(runnable,1000);
                    }
                },500);

            }
        };

然后,我在每次调用onSensorChanged()时编写值。

 x = event.values[0];
 y = event.values[1];
 z = event.values[2];
 AccelData data = new AccelData(currentTime, x, y, z);
 sensorData.add(data);
 fs.writeToFile(sensorData);
 sensorData = new ArrayList<AccelData>();

以及下面的代码是后退按钮onResume和onPause()的代码。

public void onBackPressed() {

    moveTaskToBack(true);
}

@Override
protected void onResume() {
    super.onResume();
    mHandler.postDelayed(runnable,500);
}

@Override
protected void onPause() {
    super.onPause();
    mHandler.postDelayed(runnable,500);
    //sensorManager.unregisterListener(this);
}

我希望该应用程序运行24 * 7并写入数据。

1 个答案:

答案 0 :(得分:0)

不确定我是否能收到您的代码,我不熟悉Android编程,但是我将尝试通过建议其他方法来回答。 难道您不能在某个背景线程中执行这些操作吗?这样,您不必每次都创建一个新的可运行对象。

还要注意,根据采样率,您会产生大量数据。这将非常耗能,并且会产生很大的文件。