加速度传感器-Accelerometer(模拟摇一摇)

 

加速度传感器的用法

需要注意的是,由于地心引力的存在,你的手机无论在世界上任何角落都会有一个重力
加速度,这个加速度的值大约是 9.8m/s2
当手机平放的时候,这个加速度是作用在 Z 轴上
的,当手机竖立起来的时候,这个加速度是作用在 Y 轴上的,当手机横立起来的时候,这个
加速度是作用在 X 轴上的。

代码如下:功能为模拟摇一摇和获取XYZ轴的加速度大小,也可以和光照传感器一样获取加速度传感器的一些其他信息,具体见光照传感器

public class AccelerometerDemo extends Activity {
    private TextView tv_acc;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.accelerometer_layout);
        tv_acc = (TextView) findViewById(R.id.tv_acc);//显示加速度传感器的结果
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        //获取加速度传感器对象
        Sensor accSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        //为加速度传感器注册监听器
        sensorManager.registerListener(listener, accSensor, SensorManager.SENSOR_DELAY_NORMAL);
    }
    private SensorEventListener listener=new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {
            //获取3个轴方向上的加速度值,加速度可能是负数,所以要取它们的绝对值
            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){
                //大于9.8的重力加速度就行,当然设大点更好了
                Toast.makeText(getApplicationContext(), "用户摇一摇了", 0).show();
            }
            tv_acc.setText("X轴方向上的加速度为:"+xValue
                    +"\nY轴方向上的加速度为:"+yValue
                    +"\nZ轴方向上的加速度为:"+zValue);//将得到的数据显示到TextView中
        }
        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
            
        }
    };
    private SensorManager sensorManager;

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(sensorManager!=null){
            sensorManager.unregisterListener(listener);
        }
    }
    
}

 

posted @ 2016-05-14 15:24  ts-android  阅读(792)  评论(0编辑  收藏  举报