Tôi đang thực hiện dự án của mình để ghi dữ liệu từ cảm biến gia tốc và con quay hồi chuyển và lưu nó vào tệp trong sdcard. Nhưng tôi có vấn đề, khi tôi bắt đầu ghi âm trong hơn 1 giây, kết quả trong tập tin chỉ là 1 dữ liệu bao gồm 1 trục x, 1 trục y và 1 trục z. Nói cách lý tưởng, tôi sẽ nhận được nhiều dữ liệu hơn trong nội dung tập tin đã được ghiLưu dữ liệu cảm biến vào tập tin trong 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");
}
}
}
}
}