SensorManager是管理传感器的类,包括传感器的创建,数据监听,以及解除监听
步骤一:获取管理类实例
private void initRotate() {
mSensorMg = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
步骤二:注册监听,并传入传感器类型
@Override
protected void onResume() {
super.onResume();
/**
* @param 传感器监听
* @param 需要监听的传感器实例
* @param 感应器的敏感度
*/
mSensorMg.registerListener(this, mSensorMg.getDefaultSensor(Sensor.TYPE_GRAVITY), SensorManager.SENSOR_DELAY_UI);
}
传感器的敏感度种类:
-
SENSOR_DELAY_FASTEST
最低延迟 0us,一般不推荐使用,该种模式可能造成手机电力大量消耗,会影响手机性能 -
SENSOR_DELAY_GAME
游戏延迟 20,000 us,一般绝大多数的实时性较高的游戏都使用该级别 -
SENSOR_DELAY_UI
界面延迟 60,000 us ,一般对于屏幕方向自动旋转使用,相对节省电能和逻辑处理,一般游戏开发中我们不使用。 -
SENSOR_DELAY_NORMAL
标准延迟 200,000 us,对于一般的简单小游戏可以使用,但过低的采样率可能对一些赛车类游戏有跳帧现象。
步骤三:实现管理类的方法
-
onSensorChanged
接收传感器的数值 -
onAccuracyChanged
接收传感器的精度
@Override
public void onSensorChanged(SensorEvent event) {
//业务逻辑
if (Sensor.TYPE_GRAVITY != event.sensor.getType()) {
return;
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
步骤四:解除注册
@Override
protected void onPause() {
super.onPause();
mSensorMg.unregisterListener(this);
}
补充
SensorManager.getSensorList
可获取设备支持的传感器的数量和相关