简体   繁体   中英

how to unregister multiple sensors android

I registered 3 sensors to my sensor manager:

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);
    }

and my onResume method:

@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);

}

so when I unregister the sensor manager, should I unregister 3 times, or just once? Currently I use this:

 @Override
protected void onPause() {
    super.onPause();
    sensorManager.unregisterListener(this);
}

When you register the listeners you declarare a SensorListener (in this case I guess is your activity that implements SensorEventListener ):

sensorManager.registerListener(this,accelerometer,SensorManager.SENSOR_DELAY_NORMAL);
//                             ↑  here

So use only once unregisterListener because you don't unregister individual sensors, you unregister SensorListener as you can see in method signature:

public void unregisterListener (SensorListener listener)

UPDATE:
if you need to disconnect an individual sensor just use the overloaded version of unregisterListener

public void unregisterListener (SensorEventListener listener, Sensor sensor)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM