これらのデータが外部SDカードのテキストファイルに保存され、データが正しく保存され、ファイルが正常に作成されるように、光センサーデータを収集するアプリケーションを実行しましたが、問題は、アプリケーションがデバイスでx期間実行されたときです(例:1分)データは保存されますが、アプリケーションを閉じて同じ期間デバイスから再実行すると、新しく収集されたデータが以前の実行から以前に保存されたデータに追加保存されます。テキストファイルは、実行するたびに増加します。
実行するたびに、収集されたデータはテキストファイルに完全に保存されます(実行中、つまり1分間)。アプリケーションを再度実行すると、新しい実行の新しい収集データが以前のデータに上書きされます保存されたデータ。
つまり、アプリの実行が開始されたときに、収集されたすべての読み取り値を配列リストに入れ、実行が停止すると、配列リストは収集されたすべてのデータをテキストファイルに出力しますが、アプリを再実行すると配列リストも収集データを収集し、以前の実行中の保存データの横にあるテキスト ファイルに追加します。これは解決する必要がある問題です。以前の実行中の保存データに新しい実行中の収集データを上書きする必要があります。
光センサー データを収集するコードは次のようになります。
@Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType()==Sensor.TYPE_LIGHT){
max = msensorManager.getDefaultSensor(Sensor.TYPE_LIGHT).getMaximumRange();
//getMaximumRange() is the maximum range of the sensor in the sensor's unit.
//tv1.setText("Max Reading: " + String.valueOf(max));
tv1.setText(msg +"Max Reading: " + String.valueOf(max) );
tv1.invalidate();
lightMeter.setMax((int)max);
//setMax is the max of the upper range of this progress bar
currentReading = event.values[0];
//timestamp = event.timestamp;
lightMeter.setProgress((int)currentReading);
Toast.makeText(MainActivity.this,"Event Happend '", Toast.LENGTH_SHORT).show();
tv2.setText("Current Reading: " + String.valueOf(currentReading));
current_reading_list.add((double) currentReading);
}
配列リストからファイルに書き込むコードは次のようになります。
public void writing_in_file_1(){
try{
fw = new FileWriter(file_1, true);
bw = new BufferedWriter(fw);
out = new PrintWriter(bw);
//out.append( String.valueOf(currentReading + " \t"));
//out.append(String.valueOf(current_reading_list));
out.print(String.valueOf(current_reading_list));
out.flush();
Toast.makeText(this,"Done writing SD 'specific text file'", Toast.LENGTH_SHORT).show();
}
catch (IOException e)
{
e.printStackTrace();
}
finally{
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
停止ボタンが押されると、書き込みが行われます。
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt1:
counter_function();
//onResume();
break;
case R.id.bt2:
onPause();
writing_in_file_1();
tv1.setText("");
tv2.setText("");
break;
default:
break;
}
}
誰でも私を助けることができますか?
前もって感謝します。