私はこれに少し困惑していることを告白します。私は Android プログラミングを始めたばかりで、これまでの経験を気に入っていますが、ファイルに書き込んでも、ファイルが無期限に空のままになるという不思議な問題があります (いいえ、誤って上書きしていないことは確かです)。 .
シナリオは、ボタンを押したときに数秒間のセンサー データを SD カードのログ ファイルに記録したいというものです。画面にも同じ内容を表示します。ただし、画面に表示される内容は正しくても、ログ ファイルは作成されますが空です。
onSensorChanged(Event) メソッドから write を呼び出しているという事実と関係があるとしか思えません。別の場所で同じコードを使用しても問題なく実行されるからです。
public MyClass(....){
....
sensorManager.registerListener(this, accelerometer, sensorManager.SENSOR_DELAY_NORMAL);
Thread.sleep(time * 1000);
sensorManager.unregisterListener(this);
try {
logWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void onSensorChanged(SensorEvent event){
String msg = msgFor(event);
try {
logWriter.write("SOME_TEXT" + msg + "\n"); // FileWriter logWriter is a field, but the file is empty in the end
} catch (IOException e){
e.printStackTrace();
}
resultBox.append("\n" + msg); // TextView resultBox is a field, and writes to screen correctly
Log.d("SENSOR-CHANGE", msg);
}
private String msgFor(SensorEvent event){
return event.timestamp+", "+event.sensor.getName()+", "+Arrays.toString(event.values);
}
どんなアドバイスでも大歓迎です!似たようなスレッドがいくつかあることは承知していますが、必要なものが正確に見つかりませんでした。