发布时间:2025-12-10 11:30:33 浏览次数:3
SensorManager 是系统所有传感器的管理器,有了它的实例之后就可以调用getDefaultSensor()方法来得到任意的传感器类型了
// // 获取传感器管理服务
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
// SensorManager 是系统所有传感器的管理器,有了它的实例之后就可以调用getDefaultSensor()方法来得到任意的传感器类型了
Sensor sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
// 接下来我们需要对传感器输出的信号进行监听,这就要借助 SensorEventListener 来实现了。
// SensorEventListener 是一个接口,其中定义了 onSensorChanged()和onAccuracyChanged()这两个方法
SensorEventListener listener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
}
};
// 当传感器的精度发生变化时就会调用 onAccuracyChanged()方法,当传感器监测到的数值发生变化时就会调用 onSensorChanged()方法。可以看到 onSensorChanged()
// 方法中传入了一个 SensorEvent 参数,这个参数里又包含了一个 values 数组,所有传感器输出的信息都是存放在这里的。
// 下 面 我 们 还 需 要 调 用 SensorManager 的 registerListener() 方 法 来 注 册SensorEventListener 才能使其生效,
// registerListener()方法接收三个参数,第一个参数就是 SensorEventListener 的实例,第二个参数是 Sensor 的实例,
// 这两个参数我们在前面都已经成功得到了。第三个参数是用于表示传感器输出信息的更新速率SENSOR_DELAY_UI 、 SENSOR_DELAY_NORMAL 、
// SENSOR_DELAY_GAME 和SENSOR_DELAY_FASTEST 这四种值可选,它们的更新速率是依次递增的
mSensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
// 当程序退出或传感器使用完毕时, 一定要调用 unregisterListener ()方法将使用的资源释放掉
mSensorManager.unregisterListener(listener);
boolean registerListener(SensorEventListener listener,Sensor sensor,int rateUs)
上面方法参数的意义:listener:传感器的监听器、sensor:待监听的传感器、rateUs:传感器的采样率。
androidSensorManager.registerListener(this, androidSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_UI);
Sensor参数下有多有多个常量,表示不同的传感器名称:
加速传感器(Sensor.TYPE_ACCELEROMETER)
磁场传感器(Sensor.TYPE_MAGNETIC_FLELD)
光线传感器 (Sensor.TYPE_LIGHT )
方向传感器 (TYPE_ORIENTATION)
SensorManager下有多个常量,表示获得传感器的数据速度。
SensorManager.SENSOR_DELAY_FASTEST: 以最快的速度获得传感器数据
SENSOR_DELAY_GAME: 适合与在游戏中获得传感器数据
SENSOR_DELAY_UI :适合于在ui空间中获得数据
SENSOR_DELAY_NORMAL: 以一般的速度获得传感器数据