Android--从零单排系列(5)--常用传感器的使用

来源:互联网 发布:mysql 导出csv文件 编辑:程序博客网 时间:2024/05/17 07:28

Android系统带的传感器有很多种,需要的话可以直接百度或者谷歌一下,在这里我就简单的举例一个

1,获取系统的传感器

    //获取到一个传感器管理器              sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);      //获得一个加速度传感器              Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);  

2,获取系统的传感器

简简单单获取到一个传感器的管理器,然后在获取到加速度的传感器,获取传感器的API有很多这里就列举了一个加速度的传感器,
拿到传感器之后,需要设置监听

sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_GAME);  

注册传感器的监听一共需要三个参数,第一个是监听器,第二个是加速度传感器,第三个是传感器的灵敏度,传感器的灵敏度一共分为四级,如下,从上往下灵敏度依次降低:

1. SENSOR_DELAY_FASTEST

2. SENSOR_DELAY_GAME
3. SENSOR_DELAY_UI
4. SENSOR_DELAY_NORMAL

OK ,注册完之后,我们还是来看看这个监听器是什么吧:

    private SensorEventListener listener = new SensorEventListener() {              //当手机的加速度发生变化时调用              @Override              public void onSensorChanged(SensorEvent event) {                  //获取手机在不同方向上加速度的变化                  float valuesX = Math.abs(event.values[0]);                  float valuesY = Math.abs(event.values[1]);                  float valuesZ = Math.abs(event.values[2]);                  if (valuesX > 17 || valuesY > 17 || valuesZ > 17) {                      startAnimation();                      playSound();                  }              }              @Override              public void onAccuracyChanged(Sensor sensor, int accuracy) {              }          };  

这个listener中一共就两个方法,一个是当手机的加速度发生改变的时候调用,还有一个是当传感器的灵敏度发生改变的时候调用,当手机的加速度发生改变的时候,我们可以获取到手机在X 、Y、Z 三个维度上的变化值,拿到这个值之后,我们只需要进行简单的比较即可,如果有任意一个方向的值大于17,则认为有人在晃动手机,这个时候开启动画和声音的播放。

0 0
原创粉丝点击