Приветствия. Я относительно новичок в Android программировании. Я пытался реализовать приложение, которое считывает данные датчика (акселерометр + гироскоп), а затем сохраняет их внутри с помощью нажатия кнопки. Я был в состоянии получить показания от датчика успешно. Однако только одна строка данных сохраняется в формате файла, который показывает только текущие данные, а предыдущие данные были перезаписаны. Пожалуйста, обратитесь сюда для вывода . Таким образом, мне нужна помощь, чтобы это исправить.
В MainActivity. java, я зарегистрировал прослушиватель датчиков:
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
// Obtain the sensor data from the phone
boolean IsDataRequested = false;
@Override
public void onSensorChanged(SensorEvent event) {
Sensor sensor = event.sensor;
if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
if (IsDataRequested == true){
Log.d("Accelerometer", "Acc_X:" + event.values[0] + "Acc_Y:" + event.values[1] + "Acc_Z:" + event.values[2]);
AccXText.setText("AccX:" + event.values[0]);
AccYText.setText("AccY:" + event.values[1]);
AccZText.setText("AccZ:" + event.values[2]);
save(event);
}
}
if (sensor.getType() == Sensor.TYPE_GYROSCOPE) {
if (IsDataRequested == true) {
Log.d("Gyroscope", "Gyro_X:" + event.values[0] + "Gyro_Y:" + event.values[1] + "Gyro_Z:" + event.values[2]);
GyroXText.setText("GyroX:" + event.values[0]);
GyroYText.setText("GyroY:" + event.values[1]);
GyroZText.setText("GyroZ:" + event.values[2]);
save(event);
}
}
}
Затем в том же файле я создал метод сохранения:
public void save(SensorEvent v) {
float Acc_X = v.values[0];
float Acc_Y = v.values[1];
float Acc_Z = v.values[2];
float Gyro_X = v.values[0];
float Gyro_Y = v.values[1];
float Gyro_Z = v.values[2];
String accString = "Acc=" + "X:" + Acc_X + "Y:" + Acc_Y + "Z:" + Acc_Z;
String gyroString = "Gyro=" + "X:" + Gyro_X + "Y:" + Gyro_Y + "Z:" + Gyro_Z;
String FILENAME = "user";
FileOutputStream fos = null;
try {
fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
fos.write(accString.getBytes());
fos.write(gyroString.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Нажмите кнопку, чтобы начать и остановить отправку данных:
private OnClickListener myOnSensorsRequestClickHandler = new OnClickListener() {
@Override
public void onClick(View sensors) {
IsDataRequested = !IsDataRequested;
Log.d("Sensors", "Sensors Button Pressed");
}
};
Мои цели:
Кому непрерывно сохраняйте поток данных датчика, пока та же кнопка не будет нажата, чтобы прекратить считывание данных, затем они будут сохранены в одном файле.
При следующем запуске и остановке нажатия кнопки , он добавит еще один сохраненный файл, так что я могу иметь несколько файлов в одной папке.
Любая помощь или совет очень ценится:)