SensorManager.unregisterListener に問題があります。それらはAndroidと似ています。しかし、私は私の答えを見つけることができませんでした!また、SensorManager のドキュメントの例http://developer.android.com/reference/android/hardware/SensorManager.html#SENSOR_DELAY_UIに従いました。
問題は、アクティビティが終了した後、リスナーの登録を解除しますが、アプリケーションが完全に破棄されるまでセンサーが値を送信し続けることです。
これは私のコードです:
私の SensorController は SensorEventListener を実装します
public class SensorController implements SensorEventListener{
コンストラクタ:
public SensorController(Context context){
sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
}
アクティビティの onResume コールバックが呼び出されると、私の SensorController onResume メソッドが呼び出されます。
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 メソッドが呼び出されます。
public void onPause(){
sensorManager.unregisterListener(this);
}
そして、SensorChanged に、センサー イベントを監視するためのログを置きます。
@Override
public void onSensorChanged(SensorEvent event) {
this.computeRotationAngles(event);
Log.i("SensorController", "onSensorChanged");
}
そのため... Activity onPause メソッドの後、 onSensorChanged(SensorEvent event) は引き続きセンサー イベントを取得します。どうして??SensorController.onPause() 関数で登録解除します。センサーは適切な値を取得しますが、送信を停止できません。私は何を間違っていますか?
事前にどうもありがとうございました!私はすべての小さなヒントに感謝します:)