我向传感器管理器注册了3个传感器:
if(sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) !=null ){
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(this,accelerometer,SensorManager.SENSOR_DELAY_NORMAL);
}
if(sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) !=null ){
gyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
sensorManager.registerListener(this,gyroscope,SensorManager.SENSOR_DELAY_NORMAL);
}
if(sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) !=null ){
magnetometer = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
sensorManager.registerListener(this,magnetometer,SensorManager.SENSOR_DELAY_NORMAL);
}
和我的onResume方法:
@Override
protected void onResume() {
super.onResume();
sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
sensorManager.registerListener(this, magnetometer, SensorManager.SENSOR_DELAY_NORMAL);
sensorManager.registerListener(this, gyroscope, SensorManager.SENSOR_DELAY_NORMAL);
}
因此,当我注销传感器管理器时,应该注销3次还是一次?目前,我使用这个:
@Override
protected void onPause() {
super.onPause();
sensorManager.unregisterListener(this);
}
在注册侦听器时,您声明一个SensorListener
(在这种情况下,我想是您的活动implements SensorEventListener
):
sensorManager.registerListener(this,accelerometer,SensorManager.SENSOR_DELAY_NORMAL);
// ↑ here
因此,仅使用一次即可,unregisterListener
因为您不会取消注册各个传感器,而是取消注册,SensorListener
如在方法签名中看到的那样:
公共无效的unregisterListener(SensorListener侦听器)
更新:
如果您需要断开单个传感器的连接,请使用超载版本的unregisterListener
公共无效的unregisterListener(SensorEventListener侦听器,Sensor传感器)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句