android加速度传感器数据存储到txt中

来源:互联网 发布:李逵劈鱼 源码 编辑:程序博客网 时间:2024/05/22 10:52
Activity的Java代码如下:
package com.practice.cos;import java.io.FileOutputStream;import java.io.IOException;import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.Date;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.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class PracticeActivity extends Activity implements SensorEventListener, OnClickListener {    /** Called when the activity is first created. *///设置LOG标签private Button mWriteButton, mStopButton;private boolean doWrite = false;private SensorManager sm;private TextView AT,ACT;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                AT = (TextView)findViewById(R.id.AT);        ACT = (TextView)findViewById(R.id.onAccuracyChanged);                //创建一个SensorManager来获取系统的传感器服务        sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);        /*         * 最常用的一个方法 注册事件         * 参数1 :SensorEventListener监听器         * 参数2 :Sensor 一个服务可能有多个Sensor实现,此处调用getDefaultSensor获取默认的Sensor         * 参数3 :模式 可选数据变化的刷新频率         * */        //  注册加速度传感器        sm.registerListener(this,         sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),        SensorManager.SENSOR_DELAY_NORMAL);        try {        FileOutputStream fout = openFileOutput("acc.txt", Context.MODE_PRIVATE);fout.close();        } catch (IOException e) {e.printStackTrace();        }        mWriteButton = (Button) findViewById(R.id.Button_Write);        mWriteButton.setOnClickListener(this);        mStopButton = (Button) findViewById(R.id.Button_Stop);        mStopButton.setOnClickListener(this);            }        public void onPause(){    /*     * 很关键的部分:注意,说明文档中提到,即使activity不可见的时候,感应器依然会继续的工作,测试的时候可以发现,没有正常的刷新频率     * 也会非常高,所以一定要在onPause方法中关闭触发器,否则讲耗费用户大量电量,很不负责。     * */    super.onPause();    }        public void writeFileSdcard(String fileName,String message) {        try {        FileOutputStream fout = openFileOutput(fileName, Context.MODE_APPEND);        byte [] bytes = message.getBytes();                fout.write(bytes);        fout.close();        } catch(Exception e) {        e.printStackTrace();        }    }public void onClick(View v) {if (v.getId() == R.id.Button_Write) {doWrite = true;}if (v.getId() == R.id.Button_Stop) {doWrite = false;}}public void onAccuracyChanged(Sensor sensor, int accuracy) {ACT.setText("onAccuracyChanged被触发");}public void onSensorChanged(SensorEvent event) {String message = new String();if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {//图解中已经解释三个值的含义float X = event.values[0];float Y = event.values[1];float Z = event.values[2];DecimalFormat df = new DecimalFormat("#,##0.000");SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日   HH:mm:ss");            String str=sdf.format(new Date());            message=str +"\n";message += df.format(X) + "  ";message += df.format(Y) + "  ";message += df.format(Z) +  "\n";AT.setText(message + "\n");if (doWrite) {writeFileSdcard("acc.txt", message);}}}}
保存到的acc.txt的效果图如下:
<img src="http://img.blog.csdn.net/20160704094941802?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="250" alt="" />

1 0
原创粉丝点击