1.定义Sensor管理器。
2.在onCreate()中获取传感器管理服务,
msensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);从系统服务中获得。
3.在onResume(),注册系统某某传感器的监听器
msensorManager.registerListener(this,msensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_GAME);
第一个参数是,用来监听传感器事件的监听器,因为有它所以才要实现SensorEventListener接口,implements传感器接口SensorEventListener,此时要实现接口的两个方法
第二个参数,传感器对象,指什么传感器,是重力传感器,方向传感器...
第三个参数:指定获取传感器数据的频率,见下图:
4.重写onStop(),onPause()
public void onStop(){
msensorManager.unregisterListener(this);
super.onStop();
}
public void onPause(){
msensorManager.unregisterListener(this);
super.onPause();
}
用于取消注册。
5.实现那两个方法:
onSensorChanged():当传感器的值发生改变时触发该方法。该方法通过SensorEvent对象的values()方法获取传感器的值,不同的传感器返回值不一样,X,Y,Z三个方向获取值。
public void onSensorChanged(SensorEvent event)
float degree=event.values[0];
onAccuracyChanged():当传感器的精度发生改变时触发该方法。
6.onSensorChanged():当传感器的值发生改变时触发该方法
在方法中,首席获取触发器的传感器类型,int sensorType=event.sensor.getType();
然后在switch根据类型做相应的操作。
switch (sensorType) {
case Sensor.TYPE_ORIENTATION:
7.onAccuracyChanged():当传感器的精度发生改变时触发该方法。一般很少用到。但即使不用,也要在那定义,不然接口没有实现。