1

私はAndroidを初めて使用し、現在、カメラのシャッターが開いてから閉じるまでの瞬間のジャイロスコープ/加速度計データサンプルを保存できる小さなカメラアプリを実行しています。基本的には、画像キャプチャボタンリスナーでジャイロセンサーを初期化し( でcamera.takePicture())、 でセンサーを停止しますShutterCallback。これが私の質問です。新しいサンプルを取得するたびに、記録されたセンサー データを .txt に書き込む必要がありますか、それとも何か巧妙な方法がありますか?

4

1 に答える 1

1

最速の速度でセンサー データをログに記録するアプリを作成しました ( SensorManager.SENSOR_DELAY_FASTEST)。他のタスクを実行しながら常にテキスト ファイルに書き込むことに関連するパフォーマンスの問題が心配だったのでAsyncTask、バックグラウンドでそれを行うクラスを作成しました。アプリが何時間も実行されていたとしても、次のコードは問題なく機能しました。あなたの場合、短期間だけログを記録したいので、別のアイデアは、ログ情報をコレクション オブジェクト (例: ArrayList<>) のメモリに保持し、ShutterCallback.

public void LogSensor(long SystemTime, int SensorType, float[] SensorValues) {
    String LogString = Integer.toString(SensorType);
    for(int i=0; i<SensorValues.length; i++) LogString += "," + SensorValues[i];
    (new LogSensor_in_background()).execute(SystemTime+","+LogString);
}

private class LogSensor_in_background extends AsyncTask<String, Void, Void> {
    @Override
    protected Void doInBackground(String... LogStrings) {    
    // do logging
    return null; }
}
于 2013-05-30T10:55:16.710 に答える