android 文件存储速度,Andoid Studio-android开发05-获取加速度传感器数据并存储到文件中...

本篇介绍如何获取加速度数据并存储到csv文件中

一、想要达到的效果

8c7eb2b76e3c71bceb39526959d8572a.png

功能:

1、点击开始按钮时,启动加速度传感器,读取数据,显示到屏幕上,且存入到List中;

2、点击停止按钮,停止加速度传感器,并将List中数据存入csv文件。

知识点:

1、一个activity怎样实现两个接口

2、怎样获得传感器服务,注册服务,注销服务

3、怎样获得button、textview句柄,以便操作

4、怎样关联button的click事件

二、activity文件

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context=".MainActivity">

android:id="@+id/tvx"

android:layout_width="214dp"

android:layout_height="69dp"

android:text="TextView"

tools:layout_editor_absoluteX="117dp"

tools:layout_editor_absoluteY="100dp" />

android:id="@+id/tvy"

android:layout_width="214dp"

android:layout_height="53dp"

android:text="TextView"

tools:layout_editor_absoluteX="126dp"

tools:layout_editor_absoluteY="158dp" />

android:id="@+id/tvz"

android:layout_width="214dp"

android:layout_height="53dp"

android:text="TextView"

tools:layout_editor_absoluteX="130dp"

tools:layout_editor_absoluteY="234dp" />

android:id="@+id/bt_dsp"

android:layout_width="131dp"

android:layout_height="79dp"

android:text="开始显示加速度"

tools:layout_editor_absoluteX="115dp"

tools:layout_editor_absoluteY="444dp" />

android:id="@+id/bt_stop"

android:layout_width="217dp"

android:layout_height="81dp"

android:text="停止显示加速度" />

三、java代码文件

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Environment;

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.widget.Button;

import android.widget.TextView;

import java.text.SimpleDateFormat;

import java.util.Date;

import android.util.Log;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileWriter;

import java.util.ArrayList;

import java.util.Scanner;

import java.util.List;

public class MainActivity extends AppCompatActivity implements SensorEventListener,View.OnClickListener {

private SensorManager mSensorMgr;

private TextView tvx;

private TextView tvy;

private TextView tvz;

private List LS;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

LS=new ArrayList();

Button bt=findViewById(R.id.bt_dsp);

bt.setOnClickListener(this);

Button bt_stop=findViewById(R.id.bt_stop);

bt_stop.setOnClickListener(this);

tvx=findViewById(R.id.tvx);

tvy=findViewById(R.id.tvy);

tvz=findViewById(R.id.tvz);

//

mSensorMgr=(SensorManager)getSystemService(Context.SENSOR_SERVICE);

}

protected void onPause()

{

super.onPause();

mSensorMgr.unregisterListener(this);

}

protected void onResume()

{

super.onResume();

}

protected void onStop()

{

super.onStop();

mSensorMgr.unregisterListener(this);

}

public void onSensorChanged(SensorEvent event)

{

if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER)

{

float[] values=event.values;

tvx.setText("ACC_X: "+Float.toString(values[0]));

tvy.setText("ACC_Y: "+Float.toString(values[1]));

tvz.setText("ACC_Z: "+Float.toString(values[2]));

Date date=new Date();

SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String time=formatter.format(date);

String s="";

s=time+" "+Float.toString(values[0])+" "+Float.toString(values[1])+" "+Float.toString(values[2])+"\n";

LS.add(s);

}

}

public void onAccuracyChanged(Sensor sensor,int accuracy)

{//不用处理,空着就行

return;

}

private static final String TAG = "ACCCollection:";

public static void writeLS(List LS) {

try {

String path=Environment.getExternalStorageDirectory().getAbsolutePath()+"/aaa/";

File folde=new File(path);

//tvx.setText(path);

Log.i(TAG, "write: -------1");

if (!folde.exists() || !folde.isDirectory())

{

Log.i(TAG, "write: --------2");

folde.mkdirs();

}

File file=new File(path,"aa.csv");

if(!file.exists())

{

file.createNewFile();

}

BufferedWriter bw = new BufferedWriter(new FileWriter(file, true));

int i;

for(i=0;i

{

bw.write(LS.get(i));;

bw.newLine();// 行换行

}

bw.close();

}

catch (Exception e)

{

e.printStackTrace();

}

}

public void onClick(View v)

{

if(v.getId()==R.id.bt_dsp)

{

mSensorMgr.unregisterListener(this,mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER));

mSensorMgr.registerListener(this,

mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),

SensorManager.SENSOR_DELAY_NORMAL);

LS.clear();

return;

}

if(v.getId()==R.id.bt_stop)

{

mSensorMgr.unregisterListener(this);

writeLS(LS);

return;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值