Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-将传感器数据保存到文件_Java_Android_File_Accelerometer_File Writing - Fatal编程技术网

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”)