2012-01-04 137 views
10

我正在尋找適用於Android的指南針示例。我需要做的就是獲得正確的方位(縱向&橫向模式)。Android指南針示例

我已經找到幾個樣品,有些只使用Sensor.TYPE_ORIENTATION,有些使用的組合爲Sensor.TYPE_ACCELEROMETER & Sensor.TYPE_MAGNETIC_FIELD

這是獲得我們說的Android 1.6軸承正確&常用的方法 - 4.0嗎?

回答

19

Sensor.TYPE_ORIENTATION已被棄用。

文檔說,你應該使用SensorManager.getOrientation()代替。

所以,你應該從Sensor.TYPE_ACCELEROMETER以及來自Sensor.TYPE_MAGNETIC_FIELD讀,然後調用SensorManager.getRotationMatrix()最後SensorManager.getOrientation()將返回你的電話的朝向。

從那裏,如果你看到這個圖是微不足道拿到手機的方向。這可能是你的第二個例子,但我不知道,因爲你沒有告訴我它是什麼。

+4

對不起,我忘了附上的例子:http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html所以這是一個正確的方法是什麼? – nr1 2012-01-04 21:31:54

+0

是的,那個鏈接中的東西看起來是正確的 – Dan 2012-01-04 21:39:47

+0

顯然你如何使用數據取決於你,'onSensorChanged'是有趣的數學。 – Dan 2012-01-04 21:40:30

0

使用Sensor.TYPE_ACCELEROMETERSensor.TYPE_MAGNETIC_FIELDSensorManager.getOrientation()方法的組合不會給出精確的值。已棄用的方法Sensor.TYPE_ORIENTATION運行良好。 :)

+3

然後修復您的代碼。代碼示例似乎工作正常(http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html與gezdy的評論配對) – Vaiden 2013-06-13 14:09:32

+1

或者,您可能需要重新校準您的設備 – Vaiden 2013-06-17 08:35:56

5

感謝Dan他的示例代碼。

但只是一個小修正:根據本discussion變化event.valuesevent.values.clone()
經過此修改後,它適用於我。