簡體   English   中英

寫入加速度計數據

[英]Writing accelerometer data

我希望我的應用程序在后台運行,並在文件中寫入一個值。 我有按下后退按鈕的代碼,但是它錯過了幾個要寫入文件的值。 我在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並寫入數據。

不確定是否能收到您的代碼,我不熟悉Android編程,但是我將嘗試通過建議其他方法來回答。 難道您不能在某個背景線程中執行這些操作嗎? 這樣,您不必每次都創建一個新的可運行對象。

另外請注意,根據采樣率,您會產生大量數據。 這將非常耗能,並且會產生很大的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM