1

加速度計、ジャイロスコープ、磁力計からデータを収集するデータコレクターを開発しましたが、しばらくはうまくいきました。次に、線形加速も追加しました(4か月後、今週)。現在、両方のバージョンが非常に奇妙な動作をしています。ウォーキングなどの身体活動を行うと、データが完全に記録されることがあります。ただし、センサー値が更新されず、古い値が繰り返されることがあります。つまり、各センサー値が更新された後、5 秒、2 秒などランダムに更新されます。毎秒 50 サンプルのサンプリング レート。10 ~ 15 人の参加者で実験しましたが、これが原因ですべてのデータが無効になりました。奇妙なことは、同じアプリが以前に完全に機能していたことです。私はそれに問題を見つけることができません。スナップショットの一部をここに配置します。誰かがバグか何かを指摘できるかどうか?

バッファされたライター:

FileWriter fow;
    BufferedWriter bow;

extfile = new File(extfilepath, message + ".csv");
                    fow = new FileWriter(extfile);
                    bow = new BufferedWriter(fow);  

この bow.writer は、timertask スレッドで使用され、20 ミリ秒ごとにデータを記録します。

誰でもコメントしたり、これについて私を助けてくれますか? このアプリのこの奇妙な動作は、私の理解を超えています。

4

2 に答える 2

0

else if (event.sensor.getType() == Sensor.TYPE_LINEAR_ACCELERATION){} を貼り付け忘れましたか? 加速度計のデータを使用してから重力を差し引いていますか?

わかった。タイマーを呼び出すコードはどのようなものですか?? このようなもの?

    Timer updateTimer = new Timer("linear accel");
    updateTimer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            updateGUI();
        }
    }, 0, 100);
}

private void updateGUI() {
    runOnUiThread(new Runnable() {
        public void run() {} } ?
于 2014-01-09T15:48:39.547 に答える