2016-08-10 74 views

回答

0

簡單的方向檢查(肖像與風景)將不夠。您需要檢查屏幕從「自然」方向旋轉,並相應地調整羅盤航向計算。

((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation() 

參見:Display.getRotation()

0

從你的問題,但如果你想實現一個指南針某種視圖,或剛上車在手機上的定位一般的數據並不完全清楚。

根據Android docs,有一個TYPE_MAGNETIC_FIELD值可用於確定磁性值。如果您在該頁面上向下滾動,則還會看到其他變量對定位有用,包括已棄用的TYPE_ORIENTATION。處理方向的新方法是

float[] getOrientation (float[] R, 
       float[] values) 

而如果你沒有發現它上面,用於磁場的作用是

GeomagneticField (float gdLatitudeDeg, 
       float gdLongitudeDeg, 
       float altitudeMeters, 
       long timeMillis) 

和文檔可以發現here。如果你想要超精確和有用的總航位推測和定向數據,你最終可能不得不去掉quaternions的兔子洞。如果你確實走這條路,我推薦Unity Game Engine的文檔,因爲他們很好地解釋了四元數的後果和含義,而不必一路潛入數學。

+0

我需要有關手機方向的數據。我已經實現了磁場傳感器,但並沒有實現任何濾波器,所以我想知道是否已經有一個API可以包裝一切所需的一切,以高精度實現指南針,而無需自己編寫。 – leonz

+1

沒有我知道的API會照顧到這樣的用例。如果您想維持航向,無論用戶如何更改設備方向,您都需要專門檢查輪換並自行應用計算,正如我在答案中所述。 –

相關問題