我向我的传感器经理注册了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);
}发布于 2015-08-13 10:14:10
当您注册侦听器时,您声明的是一个SensorListener (在本例中,我猜是您的活动implements SensorEventListener):
sensorManager.registerListener(this,accelerometer,SensorManager.SENSOR_DELAY_NORMAL);
// ↑ here因此,只使用一次unregisterListener,因为您不注销单个传感器,您可以从方法签名中看到,取消注册SensorListener:
公共空unregisterListener (SensorListener侦听器)
更新:
如果需要断开单个传感器,只需使用重载版本的unregisterListener
公共空隙unregisterListener (SensorEventListener侦听器,传感器传感器)
https://stackoverflow.com/questions/31985311
复制相似问题