天天看點

android設定傳感器的采集方向,Android-傳感器開發-方向判斷

1.android 的坐标系是如何定義x, y z 軸的。

x軸的方向是沿着螢幕的水準方向從左向右,如果手機不是正方形的話,較短的邊需要水準放置,較長的邊需要垂直放置。

Y軸的方向是從螢幕的左下角開始沿着螢幕的的垂直方向指向螢幕的頂端。

将手機放在桌子上,z軸的方向是從手機指向天空。

2.方向傳感器           在方向傳感器中values變量的3個值都表示度數,它們的含義如下:

values[0]:該值表示方位,也就是手機繞着Z軸旋轉的角度。0表示北(North);90表示東(East);180表示南(South);270表示西(West)。如果values[0]的值正好是這4個值,并且手機是水準放置,表示手機的正前方就是這4個方向。可以利用這個特性來實作電子羅盤,執行個體76将詳細介紹電子羅盤的實作過程。

values[1]:該值表示傾斜度,或手機翹起的程度。當手機繞着X軸傾斜時該值發生變化。values[1]的取值範圍是-180≤values[1]≤180。

假設将手機螢幕朝上水準放在桌子上,這時如果桌子是完全水準的,values[1]的值應該是0(由于很少有桌子是絕對水準的,是以,該值很可能不為0,但一般都是-5和5之間的某個值)。這時從手機頂部開始擡起,直到将手機沿X軸旋轉180度(螢幕向下水準放在桌面上)。在這個旋轉過程中,values[1]會在0到-180之間變化,也就是說,從手機頂部擡起時,values[1]的值會逐漸變小,直到等于-180。如果從手機底部開始擡起,直到将手機沿X軸旋轉180度,這時values[1]會在0到180之間變化。也就是values[1]的值會逐漸增大,直到等于180。可以利用values[1]和下面要介紹的values[2]來測量桌子等物體的傾斜度。

values[2]:表示手機沿着Y軸的滾動角度。取值範圍是-90≤values[2]≤90。假設将手機螢幕朝上水準放在桌面上,這時如果桌面是平的,values[2]的值應為0。将手機左側逐漸擡起時,values[2]的值逐漸變小,直到手機垂直于桌面放置,這時values[2]的值是-90。将手機右側逐漸擡起時,values[2]的值逐漸增大,直到手機垂直于桌面放置,這時values[2]的值是90。在垂直位置時繼續向右或向左滾動,values[2]的值會繼續在-90至90之間變化。

3.加速傳感器 該傳感器的values變量的3個元素值分别表示X、Y、Z軸的加速值。例如,水準放在桌面上的手機從左側向右側移動,values[0]為負值;從右向左移動,values[0]為正值。

4.重力感應器加速度傳感器的類型常量是Sensor.TYPE_GRAVITY。重力傳感器與加速度傳感器使用同一套坐标系。values數組中三個元素分别表示了X、Y、Z軸的重力大小。

5.陀螺儀傳感器 陀螺儀傳感器的類型常量是Sensor.TYPE_GYROSCOPE。values數組的三個元素表示的含義如下:

values[0]:延X軸旋轉的角速度。

values[1]:延Y軸旋轉的角速度。

values[2]:延Z軸旋轉的角速度。

當手機逆時針旋轉時,角速度為正值,順時針旋轉時,角速度為負值。陀螺儀傳感器經常被用來計算手機已轉動的角度。

近程傳感器(Sensor.TYPE_PROXIMITY)

線性加速度傳感器(Sensor.TYPE_LINEAR_ACCELERATION)

旋轉向量傳感器(Sensor.TYPE_ROTATION_VECTOR)

磁場傳感器(Sensor.TYPE_MAGNETIC_FIELD)

壓力傳感器(Sensor.TYPE_PRESSURE)

溫度傳感器(Sensor.TYPE_TEMPERATURE)

======================================

陀螺儀的強項在于測量裝置自身的旋轉運動。對裝置自身運動更擅長。但不能确定裝置的方位。       加速計的強項在于測量裝置的受力情況。對裝置相對外部參考物(比如,地面)的運動更擅長。但用來測量裝置相對于地面的擺放姿勢,則精确度不高。       磁力計的強項在于定位裝置的方位。可以測量出目前裝置與東南西北四個方向上的夾角。 舉幾個例子: 陀螺儀對裝置旋轉角度的檢測是瞬時的而且是非常精确的,能滿足一些需要高分辨率和快速反應的應用比如FPS遊戲的瞄準。而且陀螺儀配合加速計可以在沒有衛星 和網絡的情況下進行導航,這是陀螺儀的經典應用。加速度計可用于有固定的重力參考坐标系、存線上性或傾斜運動但旋轉運動被限制在一定範圍内的應用。同時處 理直線運動和旋轉運動時,就需要把加速度和陀螺儀計結合起來使用。如果還想裝置在運動時不至于迷失方向,就再加上磁力計。 對于一個發射出去的飛彈來說,要想精确追蹤并調整飛彈的軌道的話,下面幾組資料必不可少: GPS定位它的位置 加速計測量目前加速度 磁力計确定飛彈頭的方向(隻能知道東南西北四個方向上的夾角),陀螺儀知道飛彈的角速度。這兩個儀器結合才能确定飛彈的準确的立體運動方向。 加速計得到的結果就是XYZ三個值,分别代表三個方向的加速度。關于XYZ三值的介紹,可以看這裡: android 重力感應和螢幕旋轉關系 http://blog.csdn.net/lzx_bupt/archive/2010/04/20/5507165.aspx

采用重力加速度感應控制螢幕旋轉最為理想。

不友善作圖,簡單說:重力加速度感應可以想象成一個小球在坐标系中,三個方向上的加速度。永遠以手機螢幕為準,不以外界為準作圖,手機水準放置,向上是y軸正向,向右是x軸正向,向外是z軸正向。這和高數坐标系一樣。

注意:你移動手機反映在坐标系上你移動的是坐标系遠點(旋轉)

1. Accelrator的x,y,z軸的正負向變化:

手機螢幕向上水準放置時: (x,y,z) = (0, 0, -9.81)

當手機頂部擡起時: y減小,且為負值

當手機底部擡起時: y增加,且為正值

當手機右側擡起時: x減小,且為負值

當手機左側擡起時: x增加,且為正值

2. Accelrator的z軸的變化:

手機螢幕向上水準放置時,z= -9.81

手機螢幕豎直放置時,      z=  0

手機螢幕向下水準放置時,z=  9.81

3. 系統預設螢幕橫豎切換

當y變為-5時, 手機畫面切換為豎向

當x變為-5時, 手機畫面切換為橫向

4.根據需要你可以設定你想要的旋轉門檻值

===================================== 用加速計和磁力計可以計算出orientation(方位計),orientation涉及到了三個概念: Roll:左右傾斜角度,也叫滾轉角 http://baike.baidu.com/view/1769672.htm Pitch:前後傾斜,也叫俯仰角 http://baike.baidu.com/view/3832041.htm Yaw:左右搖擺,也叫偏航角 http://baike.baidu.com/view/1769448.htm

轉載自http://blog.163.com/sunshine_linting/blog/static/448933232012111102041393/