2009-12-20 49 views
1

我想創建一個從數字羅盤讀取數據的應用程序。我試圖重新使用從書中專業Android應用開發的代碼,但IDE顯示的備忘android SensorEventListener問題

類型SensorListener已過時

我想這是因爲從書中代碼的編寫早期的SDK版本,所以我嘗試使用SensorEventListener。

然後,當我試圖註冊監聽

sensorManager.registerListener(sensorListener, SensorManager.SENSOR_ORIENTATION, SensorManager.SENSOR_DELAY_FASTEST); 

錯誤出現了:

在類型的SensorManager方法registerListener(SensorListener,INT,INT)是不適用的參數( SensorEventListener,int,int)

所以我嘗試將SensorEventListener強制轉換爲SensorListener,但應用程序不起作用。

有誰知道如何在較新的SDK版本中使用傳感器?

謝謝。

回答

6

實際上你需要傳入一個Senor對象,而不僅僅是它的ID。

Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); sensorManager.registerListener(sensorListener, sensor, SensorManager.SENSOR_DELAY_FASTEST)

1

方法正在過時,你必須使用

registerListener(SensorEventListener, Sensor, int) 

代替。

1

我有同樣的問題,但當我鑄造的第一個2參數(SensorEventListener)和(傳感器)它的工作。然後我意識到問題在於,由於某種原因,我將Sensor聲明爲類型「對象」而不是「傳感器」,所以Eclipse未能識別參數的類型。

這爲我工作:

mSensorManager.registerListener((SensorManager)this, (Sensor)mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 

但現在我已經正確地宣佈mAccelerometer類型傳感器我不再需要轉換。