Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1250236
  • 博文数量: 247
  • 博客积分: 5587
  • 博客等级: 大校
  • 技术积分: 2060
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-24 13:27
文章分类
文章存档

2012年(101)

2011年(44)

2010年(102)

分类: 嵌入式

2012-10-15 19:40:23

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

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

       首先,我们要获得一个SensorManager,SensorManager manager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE)。然后,再通过这个manager来获得一个Sensor 的列表,List 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 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) {

       

    }

}

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

阅读(1497) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~