1
我試圖將onSensorChanged()方法的總加速度寫入文件。處理寫入文件的代碼有問題。 我的文件只顯示一個值。我想看到全部的值,直到我切換我的按鈕停止寫入。你能否指出我的代碼中哪裏是錯的?提前致謝。一次寫入一個值
ToggleButton OnStore;
private GestureDetectorCompat mDetector;
FileOutputStream fileOutputStream;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
OnStore = (ToggleButton) findViewById(R.id.onStore);
mDetector = new GestureDetectorCompat(this, new MyGestureListener());
sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensorText = (TextView) findViewById(R.id.sensor);
accelermeter = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sm.registerListener(this, accelermeter,
SensorManager.SENSOR_DELAY_NORMAL);
OnStore.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (OnStore.isChecked()){
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
File Root = Environment.getExternalStorageDirectory();
File dir = new File(Root.getAbsolutePath()+"/MyApp");
if (!dir.exists()){
dir.mkdir();
}
File file = new File(dir,"Mymessage.txt");
try {
fileOutputStream = new FileOutputStream(file,true);
String space =" ";
byte[] convert = space.getBytes();
fileOutputStream.write(convert);
String finalData;
finalData = String.valueOf(TotalAccelerate);
fileOutputStream.write(finalData.getBytes());
//fileOutputStream.close();
Toast.makeText(getApplicationContext(),"Message saving",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}else {
Toast.makeText(getApplicationContext(),"SDcard not found",Toast.LENGTH_LONG).show();
}
}
if (!OnStore.isChecked()){
try {
fileOutputStream.flush();
fileOutputStream.close();
Toast.makeText(getApplicationContext(),"Message Stopped.",Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
double TotalAccelerate;
ArrayList<Double> list;
@Override
public final void onSensorChanged(SensorEvent event) {
// The light sensor returns a single value.
// Many sensors return 3 values, one for each axis.
double xx = event.values[0];
double yy = event.values[1];
double zz = event.values[2];
TotalAccelerate = Math.round(Math.sqrt(Math.pow(xx, 2)
+ Math.pow(yy, 2)
+ Math.pow(zz, 2)));
// Log.i(DEBUG,"Total "+ TotalAccelerate);
list = new ArrayList<Double>();
list.add(TotalAccelerate);
// findPeaks(list);
sensorText.setText("Total: " + list);
Log.i(DEBUG, "Total " + list);
}
我還是沒有明白。你能否請你寫一個插圖的代碼。 –
它可以工作,但是當我的OnStore.isChecked時,我需要具有** TotalAccelerate **的所有值。我怎樣才能做到這一點。我覺得我需要一個線程。 –
我的意思是我想要存儲在我的.txt文件中的所有值。我仍然沒有得到它。 –