
我正在做我的项目来记录加速度计和陀螺仪传感器的数据并将其保存到SD卡中的文件中.但是我有问题,当我开始录制超过1秒时,文件中的结果只有1个数据,包括1 x轴,1 y轴和1 z轴.理想情况下,我应该在记录文件时获得更多数据
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); }@OverrIDepublic voID onAccuracyChanged(Sensor sensor, int accuracy) { // Todo auto-generated method stub}@OverrIDepublic 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"); } }}}}解决方法:
而不是buf.write(),尝试buf.append()
当你使用buf.write()时,它会附加新的传感器读数而不是写入
总结以上是内存溢出为你收集整理的java – 将传感器数据保存到android中的文件全部内容,希望文章能够帮你解决java – 将传感器数据保存到android中的文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)