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,则认为有人在晃动手机,这个时候开启动画和声音的播放。