2012-11-19 40 views
1

這是我的代碼。我是android開發新手。我在按鈕點擊事件上調用了registerListener。它開始從加速計獲取數據,但是當我從另一個按鈕單擊時調用unregisterListener時,它不起作用。unregisterListener不在按鈕單擊事件上工作

public void startButton(View view){ 
    findViewById(R.id.stop).setEnabled(true); 
    findViewById(R.id.start).setEnabled(false); 
    Intent intent = getIntent(); 
    selsensors = intent.getStringExtra(SensorsList.SELECTED_SENSORS); 
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 
    senList = mSensorManager.getSensorList(Sensor.TYPE_ALL); 
    mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
    mSensorManager.registerListener(this, mAccelerometer, mSensorManager.SENSOR_DELAY_NORMAL); 
} 
@Override 
public void onSensorChanged(SensorEvent event){ 
    if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){ 
     ax = event.values[0]; 
     ay = event.values[1]; 
     az = event.values[2]; 
     Toast.makeText(this, "X: "+ax+"\nY: "+ay+"\nZ: "+az, Toast.LENGTH_SHORT).show(); 
    } 
} 
public void stopButton(View view){ 
    mSensorManager.unregisterListener(this); 
    this.finish(); 
} 

回答

0

您是否嘗試過它有傳感器的參數註銷功能?此外,你確定你沒有調用已棄用的註銷函數嗎? http://developer.android.com/reference/android/hardware/SensorManager.html

mSensorManager.registerListener(this, mAccelerometer, mSensorManager.SENSOR_DELAY_NORMAL); 
mSensorManager.unregisterListener(this, mAccelerometer); 
+0

感謝您的回覆,我覺得這是工作,因爲我是用麪包來顯示加速度值,以便執行unregisterListener剩餘的郵件被toast.I diplayed上心當我看到logcat的後。 –

+0

好的,不是bug :) – RvdK