简体   繁体   English

android如何注销多个传感器

[英]how to unregister multiple sensors android

I registered 3 sensors to my sensor manager: 我向传感器管理器注册了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);
    }

and my onResume method: 和我的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);

}

so when I unregister the sensor manager, should I unregister 3 times, or just once? 因此,当我注销传感器管理器时,应该注销3次还是一次? 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 ): 当您注册侦听器时,您将声明一个SensorListener (在这种情况下,我想这是您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: 因此,仅使用一次unregisterListener因为您没有注销单个传感器,而是注销了SensorListener如方法签名所示:

public void unregisterListener (SensorListener listener) 公共无效的unregisterListener(SensorListener侦听器)

UPDATE: 更新:
if you need to disconnect an individual sensor just use the overloaded version of unregisterListener 如果需要断开单个传感器的连接,只需使用unregisterListener的重载版本

public void unregisterListener (SensorEventListener listener, Sensor sensor) 公共无效的unregisterListener(SensorEventListener侦听器,Sensor传感器)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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