android传感器的作用主要就是来获取数据,根据得到的数据来触发某种事件
下面就以重力传感器为例;
1,在onCreate中获得传感器服务
private SensorManager sm;// 获得系统的服务
private Sensor sensor;// 创建传感器实例
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// 获得传感器,//通过服务得到传感器管理对象
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
// 获得默认的传感器
sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
// TYPE_ACCELEROMETER 加速度传感器(重力传感器)类型。
// TYPE_ALL 描述所有类型的传感器。
// TYPE_GYROSCOPE 陀螺仪传感器类型
// TYPE_LIGHT 光传感器类型
// TYPE_MAGNETIC_FIELD 恒定磁场传感器类型。
// TYPE_ORIENTATION 方向传感器类型。
// TYPE_PRESSURE 描述一个恒定的压力传感器类型
// TYPE_PROXIMITY 距离(临近性)传感器
// TYPE_TEMPERATURE 温度传感器类型描述
}
2,当界面显示的时候注册传感器
@Override
protected void onResume() {
super.onResume();
// 当界面显示时,注册注册传感器
// 第一个参数是传感器监听器,第二个是需要监听的传感实例
// 最后一个参数是监听的传感器速率类型: 一共一下四种形式
// SENSOR_DELAY_NORMAL 正常
// SENSOR_DELAY_UI 适合界面
// SENSOR_DELAY_GAME 适合游戏
// SENSOR_DELAY_FASTEST 最快
sm.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
}
3,当界面消失的时候关闭传感器
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
// 关闭传感器
sm.unregisterListener(this);
}
4,监听传感器的数据改变 implements SensorEventListener{}
@Override
// 传感器获取值发生改变时获取值
public void onSensorChanged(SensorEvent event) {
float x, y;
// TODO Auto-generated method stub
// 获取手机的坐标值
x = event.values[0];// x轴
y = event.values[1];// y轴
//z = event.values[2];// z轴
// Log.i("event", "onSensorChanged:" + event + "<><>x :<> " + x
// + "<><>y:<>" + y);
// 判断传感器的方向
if (x < -2 && x > -10) {
System.out.println("向上");
} else if (x > 2 && x < 10) {
System.out.println("向下");
} else if (y < -2 && y > -10) {
System.out.println("向左");
} else if (y > 2 && y < 10) {
System.out.println("向右");
}
}
@Override
// 传感器的精度发生改变时响应此函数
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
// Log.i("event", "onAccuracyChanged:" + sensor + "<><><><>" +
// accuracy);
}
其他传感器的使用方式和上述的相似 ,只是获取的传感器不同,监听器中的event.values[0];代表的值不同