Android的传感器监听器并没有得到未注册或传感器仍然检索值 [英] Android sensor listener does not get unregistered or sensor still retrieves values

查看:367
本文介绍了Android的传感器监听器并没有得到未注册或传感器仍然检索值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些问题SensorManager.unregisterListener。它们与<类似href=\"http://stackoverflow.com/questions/16504474/android-thread-cannot-unregister-sensoreventlistener\">Android,螺纹,无法注销SensorEventListener 和<一个href=\"https://stackoverflow.com/questions/6919577/sensoreventlistener-doesnt-get-unregistered-with-unregisterlistener-method\">SensorEventListener没有得到取消注册unregisterListener()方法。但我找不到我的答案!我也跟着的SensorManager例如文档的http://developer.android.com/reference/android/hardware/SensorManager.html#SENSOR_DELAY_UI.

I have some problems with SensorManager.unregisterListener. They are similar with Android, Thread, Cannot unregister SensorEventListener and SensorEventListener doesn't get unregistered with unregisterListener() method. But I could not find my answer! I also followed SensorManager documentation example http://developer.android.com/reference/android/hardware/SensorManager.html#SENSOR_DELAY_UI.

的问题是,在活动结束后我注销听者但传感器持续发​​送值,直到应用程序被完全摧毁。

The problem is that after the Activity is finished I unregister the listener but the sensor keeps sending values until the application is completely destroyed.

这是我的code:

我SensorController实现SensorEventListener

my SensorController implements SensorEventListener

public class SensorController implements SensorEventListener{

构造:

public SensorController(Context context){
    sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
}

当活动的onResume回调叫做

我SensorController onResume方法被调用:

my SensorController onResume method is called when Activity's 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);

}

当活动的回调的onPause被称为

我SensorController的onPause方法被称为:

my SensorController onPause method is called when Activity's onPause callback is called:

public void onPause(){
    sensorManager.unregisterListener(this);
}

和在SensorChanged我把日志监视传感器事件:

And in on SensorChanged I put a log to monitor the sensor events:

@Override
public void onSensorChanged(SensorEvent event) {
    this.computeRotationAngles(event);
    Log.i("SensorController", "onSensorChanged");
}

所以......活动的onPause方法后,onSensorChanged(SensorEvent事件)还是检索传感器事件。为什么??我注销它SensorController.onPause()函数。这些传感器获取良好的价值观,但我不能阻止他们发送。我在做什么错了?

So... after the Activity onPause method, the onSensorChanged(SensorEvent event) still retrieves sensor events. Why?? I unregister it in SensorController.onPause() function. The sensors retrieve good values but I cannot stop them sending. What am I doing wrong?

非常感谢你提前!我会为每一位小技巧感谢:)

Thank you very much in advance! I will be grateful for every small tip :)

推荐答案

尝试卸载应用程序,并重新安装。它适用于我的。

try to uninstall the application and reinstall. it works on mine.

这篇关于Android的传感器监听器并没有得到未注册或传感器仍然检索值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆