2013-01-17 40 views
0

我想在我的應用程序中使用加速計數據。Sensor.TYPE_LINEAR_ACCELERATION在Android 4+上返回null

我可以毫無問題地訪問TYPE_ACCELEROMETER,但許多人建議使用已經從地球重力過濾的TYPE_LINEAR_ACCELERATION。它看起來像我沒有訪問該傳感器,因爲在下面的代碼中,日誌將返回null。 從我瞭解TYPE_LINEAR_ACCELERATION可在Android API大於8「軟件傳感器」 ...我在三星Galaxy Tab 2

任何想法用14作爲我的最低爲什麼我得到空?是因爲這個模型沒有陀螺儀嗎?

代碼:

mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 

mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

mLinearAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION); 

Log.i("TYPE_LINEAR_ACCELERATION", String.valueOf(mLinearAccelerometer)); 

由於

編輯:添加缺失 「=」 符號

+2

在您的實際代碼中缺少mLinearAccelerometer後的=(等號)? – anthropomo

+0

好的。我也會建議,如果沒有陀螺儀,那麼在設備上可能沒有linear_acceleration傳感器。我自己雖然沒有測試過。 –

+0

只是一個複製和粘貼錯誤我猜,等號是在我的代碼中,否則它不會編譯。 – Mirko

回答

3

根據the android motion sensor documentation

的Android開源項目(AOSP)提供了三種基於軟件的運動傳感器:重力傳感器,線性加速度傳感器和旋轉矢量傳感器。這些傳感器在Android 4.0中進行了更新,現在使用設備的陀螺儀......所有這三種傳感器都依賴於陀螺儀:如果設備沒有陀螺儀,則這些傳感器不會顯示並且無法使用。
。所以你的猜測是正確的,沒有陀螺儀重力傳感器不可用。

+0

是的,就是這樣 – Mirko