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

一、加速度传感器用法

加速度传感器输出的信息存放在 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

        }

    };
}

你可能感兴趣的:(android,传感器)