Android日记之2012/02/16——浅谈Android重力感应

       重力感应,也算是智能机和非智能机的区别之一了吧,Android设备中自然也能有这个功能。

       在Android中,使用重力感应功能需要使用SensorEventListener,其中有两个方法, onSensorChanged和onAccuracyChanged,一般都是在onSensorChanged方法中做一些希望达到的效果处理(惭 愧,才刚接触这个重力感应,所以对这两个方法也不是很了解)。重力感应是感应的一种方式,因此,我们还要用到感应检测包Sensor。

       首先,我们要获得一个SensorManager,SensorManager manager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE)。然后,再通过这个manager来获得一个Sensor 的列表,List<Sensor> sensors = manager.getSensorList(Sensor.TYPE_ACCELEROMETER)。 Sensor.TYPE_ACCELEROMETER就是指加速度感应检测,当然还有一些其他的感应检测,这边就没必要都说一下了。

       我在做重力感应的时候,用的是manager.registerListener(listener, sensor, rate),这边的sensor就是sensors中的一个Sensor,rate是指延迟时间。

       如果要取消这个重力感应的话,就manager.unregisterListener(listener)来取消注册就行了。

public class SensorEventDemoActivity extends Activity implements SensorEventListener{

    private List<Sensor> sensors;

    private Sensor sensor;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }

  

    @Override

    protected void onResume() {

        super.onResume();

        SensorManager manager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);

        sensors = manager.getSensorList(Sensor.TYPE_ACCELEROMETER);

      

        sensor = sensors.get(0);

      

        manager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);

    }



    @Override

    public void onSensorChanged(SensorEvent event) {

        Log.d("Sensor Demo", "do sensor");

    }



    @Override

    public void onAccuracyChanged(Sensor sensor, int accuracy) {

      

    }

}

       其实,代码很简单,主要就是要看在实际项目中如何运用了。

你可能感兴趣的:(android,sensor,SensorManager)