Java Android-将传感器数据保存到文件
我正在尝试将获得的加速度计数据保存到手机上的文件中。我每秒都会得到数据,我想把它保存到文件中。以下是我的尝试:Java Android-将传感器数据保存到文件,java,android,file,accelerometer,file-writing,Java,Android,File,Accelerometer,File Writing,我正在尝试将获得的加速度计数据保存到手机上的文件中。我每秒都会得到数据,我想把它保存到文件中。以下是我的尝试: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start = (Button)findViewById(R.id.button_s
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button)findViewById(R.id.button_start);
stop = (Button)findViewById(R.id.button_stop) ;
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
if (sensors.size() > 0) {
for (Sensor sensor : sensors) {
switch (sensor.getType()) {
case Sensor.TYPE_LINEAR_ACCELERATION:
if (mAccelerometerSensor == null) mAccelerometerSensor = sensor;
break;
default:
break;
}
}
}
context= this;
mXAccValueText = (TextView)findViewById(R.id.value_x);
mYAccValueText = (TextView)findViewById(R.id.value_y);
mZAccValueText = (TextView)findViewById(R.id.value_z);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
writer = new FileWriter("data.txt",true);
} catch (IOException e) {
e.printStackTrace();
}
time = System.currentTimeMillis();
mSensorManager.registerListener(MainActivity.this, mAccelerometerSensor, SensorManager.SENSOR_DELAY_GAME);
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(writer != null) {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
mSensorManager.unregisterListener(MainActivity.this);
}
});
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
long currentTime;
switch (event.sensor.getType()) {
case Sensor.TYPE_LINEAR_ACCELERATION:
currentTime = System.currentTimeMillis();
if (currentTime - accelerometerTime > 1000) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
try {
writer.write(x+","+y+","+z+"\n");
} catch (IOException e) {
e.printStackTrace();
}
accelerometerTime = currentTime;
}
break;
}
}
@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
开始=(按钮)findviewbyd(R.id.Button\u start);
停止=(按钮)findViewById(R.id.Button\u停止);
msSensorManager=(SensorManager)getSystemService(Context.SENSOR\u服务);
List sensors=msSensorManager.getSensorList(Sensor.TYPE_ALL);
如果(sensors.size()>0){
用于(传感器:传感器){
开关(sensor.getType()){
外壳传感器.类型\线性\加速度:
如果(mAccelerometerSensor==null)mAccelerometerSensor=传感器;
打破
违约:
打破
}
}
}
上下文=这个;
mXAccValueText=(TextView)findViewById(R.id.value_x);
mYAccValueText=(TextView)findViewById(R.id.value_y);
mZAccValueText=(TextView)findViewById(R.id.value_z);
start.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
试一试{
writer=newfilewriter(“data.txt”,true);
}捕获(IOE异常){
e、 printStackTrace();
}
时间=System.currentTimeMillis();
msSensorManager.registerListener(MainActivity.this、mAccelerometerSensor、SensorManager.SENSOR\u DELAY\u游戏);
}
});
stop.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(writer!=null){
试一试{
writer.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
mSensorManager.unregisterListener(MainActivity.this);
}
});
}
@凌驾
受保护的void onPause(){
super.onPause();
}
@凌驾
受保护的void onResume(){
super.onResume();
}
@凌驾
精度更改时的公共无效(传感器,int精度){
}
传感器更改时的公共无效(传感器事件){
长时间;
开关(event.sensor.getType()){
外壳传感器.类型\线性\加速度:
currentTime=System.currentTimeMillis();
如果(当前时间-加速度计时间>1000){
float x=事件值[0];
浮动y=事件值[1];
float z=事件值[2];
试一试{
writer.write(x+“,“+y+”,“+z+”\n”);
}捕获(IOE异常){
e、 printStackTrace();
}
加速度计时间=当前时间;
}
打破
}
}
然而,我只是不断得到例外。我是Android新手,有人能给我指出正确的方向吗
if (currentTime - accelerometerTime > 1000)
你在这之前设置过加速度计吗?在给定的代码中,您仅在之后设置它?您得到的异常是什么?这一行的NullPointerException:
writer.write(x+”,“+y+”,“+z+”\n”)代码>