Я хочу печатать акселерометр каждую секунду и сохранять это значение в файле .csv. Я использую Sensor.TYPE_LINEAR_ACCELERATION для генерации значения акселерометра. Пожалуйста, помогите мне, я так запутался с этим,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
isRunning=false;
time_string = new String();
dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
acclero_sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
Text_X_Acclero = (TextView) findViewById(R.id.text_x_acclero);
Text_Y_Acclero = (TextView) findViewById(R.id.text_y_acclero);
Text_Z_Acclero = (TextView) findViewById(R.id.text_z_acclero);
buttonStart = (Button)findViewById(R.id.button_start);
buttonStop = (Button)findViewById(R.id.button_stop);
buttonStart.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
buttonStart.setEnabled(false);
buttonStop.setEnabled(true);
Log.d(TAG, "Writing to " + getStorageDir());
try {
writer = new FileWriter(new File(getStorageDir(), "sensors_" + System.currentTimeMillis() + ".csv"));
writer.write(String.format("%s, %s, %s, %s\n ",
"Waktu", "x_acclero", "y_acclero", "z_acclero"));
} catch (IOException e) {
e.printStackTrace();
}
isRunning = true;
return true;
}
});
buttonStop.setOnTouchListener(new View.OnTouchListener() {
@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
buttonStart.setEnabled(true);
buttonStop.setEnabled(false);
isRunning = false;
sensorManager.flush(accleroListener);
sensorManager.unregisterListener(accleroListener);
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
});
}
, и это мой код для сохранения значения в CSV-файле
public SensorEventListener accleroListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
x_acclero = event.values[0];
y_acclero = event.values[1];
z_acclero = event.values[2];
//waktu dan tanggal record
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
time_string = dateFormat.format(new Date());
Text_X_Acclero.setText("X : " + (int)x_acclero + " m/s2");
Text_Y_Acclero.setText("Y : " + (int)y_acclero + " m/s2");
Text_Z_Acclero.setText("Z : " + (int)z_acclero + " m/s2");
if (isRunning){
try{
switch (event.sensor.getType()){
case Sensor.TYPE_GYROSCOPE:
case Sensor.TYPE_LINEAR_ACCELERATION:
writer.write(String.format("%s, %.4f, %.4f, %.4f, %.4f, %.4f, %.4f \n ",
time_string, x_acclero, y_acclero, z_acclero));
break;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
};}
, что код работает, но я не могу установитьсколько значений будет записано