2011-08-11 59 views
7

我正在開發蜂窩薑餅,我想知道當我使用Sensor.TYPE_ROTATION_VECTOR時使用哪種物理傳感器?傳感器使用哪些傳感器.TYPE_ROTATION_VECTOR

它是否使用指南針和加速度計的組合?或者陀螺儀+加速器?還是全部三個?或者是其他東西? 我問的原因是我的應用程序在兩個不同的硬件上的行爲不同,它們實際上應該有相同類型的傳感器。

謝謝, 馬克

+0

你能否詳細介紹一下「在兩塊硬件上表現不同」? – AedonEtLIRA

+0

在執行了一些更多的測試之後,Honeycomb(使用我的平板電腦)使用Sensor.TYPE_ROTATION_VECTOR將會使用加速度計和設備的陀螺儀(這正是我所期望的)。 在我的三星Galaxy S2運行薑餅,它似乎使用磁羅盤的一些非常奇怪的原因。 (我能夠通過在設備旁邊放置一塊強力磁鐵來解決這個問題,當我移動它時,應用程序響應磁鐵。) 因此薑餅或三星都沒有充分利用物理傳感器。 – Mark

+0

至於改變傳感器,我不認爲沒有操作系統操作是可能的。至於硬件的使用,我和你在一起,我認爲它會使用陀螺儀和加速器。沒有太多的意義,爲什麼它不會。 – AedonEtLIRA

回答

2

它看起來像它使用您定義與您的SensorManager使用的任何傳感器。反過來,傳感器管理器將廣播您的代碼將要偵聽的傳感器事件。

看看下面的演示代碼來看一個例子。

來源:

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

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.html

+1

嗯,我不這麼認爲。 Sensor.TYPE_ROTATION_VECTOR只是一個虛擬傳感器,操作系統將以某種方式「決定」使用哪個物理傳感器來提供旋轉​​向量。我看不到改變行爲的方法,無論是在我的代碼還是在您提供的鏈接中。 – Mark

6

我知道它已經有一段時間,因爲這個問題被問過,但我沒有看到一個明確的答案,所以......

如果可用,它將使用全部三個傳感器。使用磁場傳感器對於獲得一些絕對的參考點至關重要。 「旋轉傳感器」需要初始定位,然後消除陀螺儀隨着時間推移的漂移。陀螺儀仍然使用,因爲它的精確性和良好的響應時間。加速度計有助於確定重力矢量。

+0

需要說明的是,陀螺儀僅適用於Android 4.0或更高版本。來源:http://developer.android.com/guide/topics/sensors/sensors_motion.html –

+1

搜索的術語是「傳感器融合」。 4.0和以上,基本上是一個黑盒子,它讀取所有可用的傳感器並將它們組合(我想通過卡爾曼濾波器)。然後,所有的傳感器,真實的和虛擬的,都被視爲傳感器融合黑匣子的輸出。 –

+2

正確。我的初始來源是http://www.youtube.com/watch?v=C7JQ7Rpwn2k,我建議任何人處理傳感器數據。 –

3

理論:

爲你的手機知道方向,包括方位,你需要在現實世界中引用一個平面。 該平面是從兩個非共線性矢量計算出來的:重力(加速度計)和磁場力。這個矢量在地球上的兩個「地點」獲得共線,但幸運的是,它靠近地球兩極。

做法:

與磁和加速度計,你能得到的方位。 不幸的是,如果您將手機提交給任何線性加速度,或者如果存在磁干擾,則會出現噪音。 陀螺儀的使用顯着提高了響應時間/精確度(因爲它是一個折衷),但它並不是所有應用都必需的。

1

https://source.android.com/devices/sensors/sensor-types.html,其規格設備OEM使用來實現各種的Android傳感器類型:

旋轉向量(SENSOR_TYPE_ROTATION_VECTOR) - 底層物理傳感器:加速度計,磁強計,陀螺儀和...它通常是通過集成加速度計,陀螺儀和磁力計讀數獲得...底層物理傳感器 -
加速度計,磁強計,和(當存在時)陀螺儀。

...

遊戲旋轉向量(SENSOR_TYPE_GAME_ROTATION_VECTOR) - 底層物理傳感器:加速度計和陀螺儀(無磁強計)。遊戲旋轉矢量傳感器類似於旋轉矢量傳感器,但不使用地磁場。因此Y軸不指向北,而是指向其他參考。允許該參考值與陀螺儀在Z軸周圍漂移相同的數量級漂移...底層物理傳感器 -
加速度計,陀螺儀不得使用磁力計。

...

地磁旋轉向量(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) - 底層物理傳感器:加速度計和磁力(無陀螺儀)。地磁旋轉矢量類似於旋轉矢量傳感器,但是使用磁力計而不使用陀螺儀。該傳感器必須基於磁力計。它不能用陀螺儀來實現,並且陀螺儀輸入不能被這個傳感器使用......底層物理傳感器 - 加速度計,磁強計,不能使用陀螺儀。

...

當在設備上沒有陀螺儀,並且僅當不存在陀螺儀,則可以實現旋轉矢量,線性加速度和重力傳感器不使用陀螺儀。

所以確切的實現可能因設備而異 - 有些設備可能沒有陀螺儀。