【发布时间】:2015-03-01 07:49:20
【问题描述】:
我创建了一个简单的应用程序。我想将加速度计数据写入我创建的文本文件中。我使用了以下代码 sn-p,但是当我检查我的文件时,我无法获取其中写入的值。我不确定我做错了什么。 提前谢谢你
P.S 我是 Android 新手
package com.example.walkpatteranalyser;
import com.example.walkpatteranalyser.R;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import android.R.string;
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mAccelerometer;
private FileWriter Writer;
char co_or_x;
char co_or_y;
char co_or_z;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
public void onStartClick(View view) {
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
Toast.makeText(getApplicationContext(), "Started writing to myfile.txt", Toast.LENGTH_SHORT).show();
}
public void onStopClick(View view) {
mSensorManager.unregisterListener(this);
Toast.makeText(getApplicationContext(), "Stopped", Toast.LENGTH_SHORT).show();
}
protected void onResume() {
super.onResume();
}
protected void onPause() {
super.onPause();
if( Writer != null) {
try {
Writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
try {
File root = new File(Environment.getExternalStorageDirectory(), "Accleration_Data");
if (!root.exists()) {
root.mkdirs();
}
// BufferedWriter out = new BufferedWriter(new FileWriter("text.txt"));
// out.write(Float.toString(event.values[0]) + Float.toString(event.values[1]) + Float.toString(event.values[2]) );
// out.close();
File gpxfile = new File(root, "text.txt");
FileWriter writer = new FileWriter(gpxfile);
// writer.append(sBody);
BufferedWriter out = new BufferedWriter(new FileWriter("text.txt"));
out.write(Float.toString(event.values[0]) + Float.toString(event.values[1]) + Float.toString(event.values[2]) );
out.close();
// writer.flush();
// writer.close();
Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}
【问题讨论】:
-
您收到“已保存”的祝酒词了吗?另外,您为什么要尝试将加速度计数据写入文件?还有一件事...... onSensorChanged 事件可以很快到来,而且你有很多事情要做......
-
不,我没有得到“已保存”的吐司。我正在尝试编写加速度计数据以在行走时获得一些加速度计模式。但我可以在其中创建一个文件夹“Accleration_Data”以及一个“text.txt”文件。无法将传感器数据写入文件。
-
你打算在你的代码中读取这个文件,处理它,并让它决定某些功能是如何工作的吗?或者,您只是想查看数据进行分析?如果您只想查看数据,最好的方法是记录数据,然后保存日志以供分析。
-
我只想用它来分析。好的,谢谢 Daniel Nuget。
-
如果您还想尝试让文件写入工作,请参阅下面的答案。还有一些方法可以通过在应用启动时启动 shell 脚本将日志写入 sdcard 上的文件。