android线性加速度传感器数据存储到手机的sd卡中
2016-07-07 16:17
405 查看
以前用FileOutputStream openFileOutput (String name, int mode)函数来保存txt文件,该
函数的作用是:可以方便地在手机中创建文件,并返回文件输出流,用于对文件做写入操作。
但是使用openFileOutput方法创建的文件是保存在/data/data/<package name>/files/目录中的,
如果没有root权限,难以访问。
因此,对以前的例子做了相应的改进, 将android线性加速度传感器数据存储到手机的sd卡
中的根目录下,方便查看。
MainActivity代码如下:
其中SensorManager.SENSOR_DELAY_GAME 表示获得传感器数据的速度,这个是20,000微妙的延迟,
即50次/秒。
代码免费下载地址:http://download.csdn.net/detail/baidu_28479651/9570007
函数的作用是:可以方便地在手机中创建文件,并返回文件输出流,用于对文件做写入操作。
但是使用openFileOutput方法创建的文件是保存在/data/data/<package name>/files/目录中的,
如果没有root权限,难以访问。
因此,对以前的例子做了相应的改进, 将android线性加速度传感器数据存储到手机的sd卡
中的根目录下,方便查看。
MainActivity代码如下:
package app.coolweather.com.distance; 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.Button; import android.widget.TextView; import java.io.File; import java.io.RandomAccessFile; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; public class MainActivity extends Activity implements SensorEventListener, View.OnClickListener { private SensorManager sm; private Button mWriteButton,mStopButton; private TextView mTextView; private Boolean doWrite = false; private int count=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView)findViewById(R.id.textView); sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);//创建一个SensorManager来获取系统的传感器服务 mWriteButton = (Button) findViewById(R.id.Button_Write); mWriteButton.setOnClickListener(this); mStopButton = (Button) findViewById(R.id.Button_Stop); mStopButton.setOnClickListener(this); } @Override protected void onResume() { super.onResume(); // 注册传感器 sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION), SensorManager.SENSOR_DELAY_GAME); } @Override public void onSensorChanged(SensorEvent event) { String message = new String(); DecimalFormat df = new DecimalFormat("#,##0.000000"); int sensorType = event.sensor.getType(); switch (sensorType) { case Sensor.TYPE_LINEAR_ACCELERATION: float X = event.values[0]; float Y = event.values[1]; float Z = event.values[2]; SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS"); String str = sdf.format(new Date()); message = str + " " + df.format(X) + " " + df.format(Y) + " " + df.format(Z) + "\n"; break; } if (doWrite) { writeFileSdcard(message); } } /** * 信息写入手机SD卡 * @param message 信息 */ private void writeFileSdcard(String message) { try { // 如果手机插入了SD卡,而且应用程序具有访问SD的权限 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { // 获取SD卡的目录 File sdCardDir = Environment.getExternalStorageDirectory(); File targitFile = new File(sdCardDir.getCanonicalPath() + "/SensorData"+count+".txt"); // 以指定文件创建 RandomAccessFile对象 RandomAccessFile raf = new RandomAccessFile(targitFile, "rw"); // 将文件记录指针移动到最后 raf.seek(targitFile.length()); // 输出文件内容 raf.write(message.getBytes()); // 关闭RandomAccessFile raf.close(); } } catch (Exception e) { e.printStackTrace(); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override protected void onPause() { super.onPause(); } @Override public void onClick(View v) { if (v.getId() == R.id.Button_Write) { doWrite = true; count++; mTextView.setText("Writing...SensorData"+count); } if (v.getId() == R.id.Button_Stop) { doWrite = false; mTextView.setText("SensorData"+count+" 状态:stop"); } } }
其中SensorManager.SENSOR_DELAY_GAME 表示获得传感器数据的速度,这个是20,000微妙的延迟,
即50次/秒。
代码免费下载地址:http://download.csdn.net/detail/baidu_28479651/9570007
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories