나는 가속도계 및 자이로 스코프 센서의 데이터를 기록하고 sdcard에 파일로 저장하는 프로젝트를 수행 중입니다. 하지만 문제가 있습니다. 1 초 이상 녹음을 시작하면 파일의 결과는 1 x 축, 1 y 축 및 1 z 축으로 구성된 단지 1 개의 데이터입니다. 이상적으로 말하면, 나는 그것이 대신 buf.write()
의센서 데이터를 android에 파일로 저장
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
//return inflater.inflate(R.layout.get_data, container, false);
//get path from sdcard
sdcard = Environment.getExternalStorageDirectory().getPath();
rootView = inflater.inflate(R.layout.get_data, container,false);
Button start = (Button) rootView.findViewById(R.id.buttonstart);
Button stop = (Button) rootView.findViewById(R.id.buttonstop);
//eksekusi saat klik button stop
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rekam = false;
// TODO Auto-generated method stub
//sensorManager.unregisterListener(mySensorEventListener);
//super.onStop();
}
});
//eksekusi saat klik button start
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rekam = true;
String nama = sdcard+"/datasensor.txt";
namafile = new File(nama);
}
});
return rootView;
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
parent = getActivity();
sensorManager = (SensorManager) parent.getSystemService(Context.SENSOR_SERVICE);
sensor = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);
sensorgyroscope = sensorManager.getSensorList(Sensor.TYPE_GYROSCOPE).get(0);
koordinatX = (TextView)rootView.findViewById(R.id.coordinatx);
koordinatY = (TextView)rootView.findViewById(R.id.coordinaty);
koordinatZ = (TextView)rootView.findViewById(R.id.coordinatz);
koordinatrollX = (TextView)rootView.findViewById(R.id.coordinatrollx);
koordinatpitchY = (TextView)rootView.findViewById(R.id.coordinatpitchy);
koordinatyawZ = (TextView)rootView.findViewById(R.id.coordinatyawz);
sensorManager=(SensorManager) parent.getSystemService(Context.SENSOR_SERVICE);
//add listener for accelerometer
sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_NORMAL);
//add listener for gyroscope
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE), SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER)
{
//assign directions accelometer
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
koordinatX.setText("X: "+x);
koordinatY.setText("Y: "+y);
koordinatZ.setText("Z: "+z);
if(rekam==true)
{
try
{
BufferedWriter out = new BufferedWriter(new FileWriter(namafile));
out.write(Float.toString(event.values[0]) + Float.toString(event.values[1]) + Float.toString(event.values[2]));
out.close();
}
catch (IOException e)
{
System.out.println("Exception");
}
}
}
if(event.sensor.getType()==Sensor.TYPE_GYROSCOPE)
{
float roolX = event.values[0];
float pitchY = event.values[1];
float yawZ = event.values[2];
koordinatrollX.setText("Orientation X (Roll) :" + Float.toString(event.values[0]));
koordinatpitchY.setText("Orientation Y (Pitch) :" + Float.toString(event.values[1]));
koordinatyawZ.setText("Orientation Z (Yaw):" + Float.toString(event.values[2]));
if(rekam==true)
{
try
{
BufferedWriter out = new BufferedWriter(new FileWriter(namafile));
out.write(Float.toString(event.values[0]) + Float.toString(event.values[1]) + Float.toString(event.values[2]));
out.close();
}
catch (IOException e)
{
System.out.println("Exception");
}
}
}
}
}