Android笔记(十八)加速度传感器

来源:互联网 发布:如何使用大数据分析 编辑:程序博客网 时间:2024/05/17 22:46

一、加速度传感器用法

加速度传感器输出的信息存放在 SensorEvent 的 values 数组中, values 数组中有三个值,分别代表手机在 X 轴、Y 轴和 Z 轴方向上的加速度信息。
手机的宽是X轴,长是Y轴,垂直于手机屏幕的是Z轴,需要注意的是,地球上的任何物体都有重力加速度,计算的时候不要忘记。

二、模仿微信摇一摇

由于重力加速度的存在,即使手机在静止的情况下,某一个轴上的加速度也有可能达到9.8m/s2,因此这个预定值必定是要大于 9.8m/s2的,这里我们就设定为 15m/s2。

public class MainActivity extends ActionBarActivity {    private SensorManager sensorManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);        Sensor sensor = sensorManager                .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);        sensorManager.registerListener(listener, sensor,                SensorManager.SENSOR_DELAY_NORMAL);    }    @Override    protected void onDestroy() {        super.onDestroy();        if (sensorManager != null) {            sensorManager.unregisterListener(listener);        }    }    private SensorEventListener listener = new SensorEventListener() {        @Override        public void onSensorChanged(SensorEvent event) {            float xValue = Math.abs(event.values[0]);            float yValue = Math.abs(event.values[1]);            float zValue = Math.abs(event.values[2]);            if (xValue > 15 || yValue > 15 || zValue > 15) {                Toast.makeText(MainActivity.this, "摇一摇", Toast.LENGTH_SHORT)                        .show();            }        }        @Override        public void onAccuracyChanged(Sensor sensor, int accuracy) {            // TODO Auto-generated method stub        }    };}
0 0
原创粉丝点击