I have some problems with SensorManager.unregisterListener. They are similar to Android, Thread, Can not unregister SensorEventListener and SensorEventListener does not receive the unregistered unregisterListener () method . But I could not find my answer! I also took advantage of the SensorManager documentation example http://developer.android.com/reference/android/hardware/SensorManager.html#SENSOR_DELAY_UI .
The problem is that after the completion of the Activity, I unregistered the listener, but the sensor continues to send values ββuntil the application is completely destroyed.
This is my code:
my SensorController implements a SensorEventListener
public class SensorController implements SensorEventListener{
Constructor:
public SensorController(Context context){ sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); }
my SensorController onResume method is called when the Activity onResume callback is called:
public void onResume(){ mAccelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); boolean ret1 = sensorManager.registerListener(this, mAccelerometerSensor, SensorManager.SENSOR_DELAY_UI); mMagneticSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); boolean ret2 = sensorManager.registerListener(this, mMagneticSensor, SensorManager.SENSOR_DELAY_UI); }
my SensorController onPause method is called when the Activity onPause callback is called:
public void onPause(){ sensorManager.unregisterListener(this); }
And in SensorChanged, I put a log to monitor sensor events:
@Override public void onSensorChanged(SensorEvent event) { this.computeRotationAngles(event); Log.i("SensorController", "onSensorChanged"); }
So ... after the Activity onPause method, the onSensorChanged (SensorEvent) event still retrieves the sensor events. What for?? I unregistered the SensorController.onPause () function. Sensors extract good values, but I can't stop sending them. What am I doing wrong?
Thank you in advance! I will be grateful for every little advice :)