SensorManager是一个传感器管理类,获取的方式如下
SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
若是在Activity中,官方文档中是在Activity的onResume()方法中进行SensorEventListener的注册,在onPause()方法中进行注销。注册方法为:
SensorManager.registerListener(SensorEventListener listener, Sensor sensor, int rate);
参数:
listener:SensorEventListener的实例,是传感器变化的监听器。
sensor: 传感器类型,通常用SensorManager.getDefaultSensor(int sensorType)来获取,sensorType的参数在Sensor类下,如下图:
rate:指定获取传感器数据的频率,值在SensorManager类下,有如下几个值:
要使Sensor工作,自然必须要对SensorEventListener监听器进行重写,必须重写的方法有两个:
onAccuracyChanged(Sensor sensor, int accuracy)为传感器在精度改变时调用的方法,可以调用sensor.getType()获取传感器类型,accuracy为传感器此时的精度。
onSensorChanged(SensorEvent event)为传感器状态改变时调用的方法,可以调用event.accuracy属性来获取传感器精度,返回值为int类型;调用event.sensor获取传感器实例,返回值为Sensor类型,event.sensor.getType()可以获取传感器类型;调用event.values返回传感器返回的数值,返回值类型为final float[],每个sensor的values取值不同,根据sensor类型不同选取。
各个传感器values取值详见:点击打开链接