2
回答
采集加速度传感器数据,每次采集5秒,但运行后没反应,求解答
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
package com.wj.obtaindata;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity
{
    private static long startTime=0L;// 起点时间
    private int duration=5000;// 每次采样持续时间
    private SensorEventListener sel;// 传感器事件监听器
    private SensorManager sm;// 传感器管理器
    ArrayList<String> temp_record;// 暂存5秒内的数据
    TextView tv0, tv1, tv2;//TextView组件,用于实时反映三轴加速度数据的值
    private float[] data=
    { 0.0F, 0.0F, 0.0F };// 接收传感器数据
    Sensor sensor;
    StringBuilder localStringBuilder;
    /* 将采集到的数据放入动态数组 */
    private void tempRecorder(float[] data)
    {
        temp_record=new ArrayList();
        localStringBuilder=new StringBuilder();
        for(int i=0; i < 3; i++)
        {
            localStringBuilder.append(String.valueOf(data ) + " ");
            // 向localStringBuilder中添加一条数据
        }
        localStringBuilder.append("\t");
        temp_record.add(localStringBuilder.toString());
    }
    @SuppressLint("NewApi")
    public void onCreate(Bundle paramBundle)
    {
        super.onCreate(paramBundle);
        setContentView(R.layout.activity_main);
        tv0=(TextView) findViewById(R.id.tv0);
        tv1=(TextView) findViewById(R.id.tv1);
        tv2=(TextView) findViewById(R.id.tv2);
        sm=(SensorManager) getSystemService(SENSOR_SERVICE);
        sensor=sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        sel=new SensorEventListener()
        {
            public void onAccuracyChanged(Sensor paramSensor, int paramInt)
            {
            }
            @TargetApi(Build.VERSION_CODES.CUPCAKE)
            @SuppressLint("NewApi")
            public void onSensorChanged(SensorEvent event)
            {
                startTime=System.currentTimeMillis();// 获取系统当前时间
                while(true)
                {
                    if(System.currentTimeMillis() - startTime <= duration)
                    {
                        data[0]=event.values[0];
                        data[1]=event.values[1];
                        data[2]=event.values[2];
                        tv0.setText("x轴加速度:" + data[0]);
                        tv1.setText("y轴加速度:" + data[1]);
                        tv2.setText("z轴加速度:" + data[2]);
                        tempRecorder(data);
                    }
                    else
                    {
                        startTime=0L;
                        temp_record.clear();
                    }
                }
            }
        };
    }
    protected void onResume()// 重新开始或继续
    {
        super.onResume();
        sm.registerListener(sel, sensor, SensorManager.SENSOR_DELAY_GAME);
        // 注册加速度传感器
    }
    protected void onStop()// 程序停止
    {
        sm.unregisterListener(sel);// 注销传感器
        super.onStop();
    }
    protected void onDestroy()// 退出程序
    {
        Toast.makeText(getApplicationContext(), "ObtainData程序退出", 0).show();
        super.onDestroy();
    }
}
举报
wjdroid
发帖于3年前 2回/733阅
顶部