2010-05-04 153 views
5

我需要爲我的應用程序構建指南針。指南針精度難題

從閱讀文檔,似乎有這樣兩種方式合理:

  • Sensor.TYPE_ORIENTATION法:這是這樣做的簡單方法。這個問題是不準確的。當我將我的閱讀與突觸指南針進行比較時,它大約在10-15度範圍內,這對我來說是不可接受的。
  • Sensor.TYPE_ACCELEROMETER,Sensor.TYPE_MAGNETIC_FIELD和getRotationMatrix()與remapCoordinateSystem()和getOrientation()方法一起使用:文檔說這「通常更準確」。問題在於,無論我向聽衆註冊的延遲如何,即使設備靜止在平坦的表面上,指南針也會發瘋。

任何解決這個問題的建議將不勝感激。

回答

8

貌似mob1lejunkie已經想通了這一點了,但只是以供將來參考,讓我提的是這裏的問題是magnetic declination(磁北與真北之間的差異)。你可以試試an online model from NOAA來了解你在世界上的差異。

Android包含一個名爲GeomagneticField的模型,可以使用該模型計算給定緯度,經度和高度的近似偏角。所以,我相信你需要做的是計算真北,從Sensor.TYPE_ORIENTATION中讀出azimuth value,然後添加到GeomagneticField.getDeclination()中。

+0

是的,這正是問題所在。 – mob1lejunkie 2010-06-16 05:22:50

1

這是手機緊湊部件的缺點。目前我們正在使用的5000美元IMU具有+/- 2度的誤差,並且在該範圍內它似乎也變得瘋狂。

嘗試避開干擾,金屬表面,看看它是否有所改善。如果沒有,我不想打破壞消息,但那是硬件。

你見過這些嗎?

http://developer.android.com/reference/android/hardware/SensorManager.html

http://groups.google.com/group/android-developers/browse_thread/thread/bbb0e8b97c673cf9/5c16bc2e49f6e972?lnk=raot

+0

我想說的是在同一部手機(Nexus One)上廚房桌子上的完全相同的位置Snaptic Compass,Android Market的第三方應用程序,然後我的閱讀更準確。 我想知道Snaptic使用什麼技巧來獲得更準確和可靠的閱讀。 – mob1lejunkie 2010-05-04 23:23:32

+0

看到我添加回答的鏈接。 – 2010-05-07 03:19:41

+0

在突觸指南針設置後,我注意到它使用真北,而我使用磁北。現在,我也使用真正的北方我的應用程序和突觸指南針具有相同的閱讀。當然,閱讀並不完美,但這是由於Nexus One硬件不是我指南針實施的缺點。 pinnacler感謝您的幫助! – mob1lejunkie 2010-05-08 08:53:23