android中的11中常見感應器的使用方法

來源:互聯網
上載者:User

標籤:手機 感應器 使用方法

在Android2.3gingerbread系統中,google提供了11種感應器供應用程式層使用。

01#defineSENSOR_TYPE_ACCELEROMETER 1 //加速度02#define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力03#defineSENSOR_TYPE_ORIENTATION 3 //方向04#define SENSOR_TYPE_GYROSCOPE 4 //陀螺儀05#define SENSOR_TYPE_LIGHT 5//光線感應06#defineSENSOR_TYPE_PRESSURE 6 //壓力07#define SENSOR_TYPE_TEMPERATURE 7 //溫度08#define SENSOR_TYPE_PROXIMITY 8//接近09#defineSENSOR_TYPE_GRAVITY 9 //重力10#define SENSOR_TYPE_LINEAR_ACCELERATION 10//線性加速度11#defineSENSOR_TYPE_ROTATION_VECTOR 11//旋轉向量

我們依次看看這十一種感應器

1 加速度感應器

加速度感應器又叫G-sensor,返回x、y、z三軸的加速度數值。

該數值包含地心引力的影響,單位是m/s^2。

將手機平放在案頭上,x軸預設為0,y軸預設0,z軸預設9.81。

將手機朝下放在案頭上,z軸為-9.81。

將手機向左傾斜,x軸為正值。

將手機向右傾斜,x軸為負值。

將手機向上傾斜,y軸為負值。

將手機向下傾斜,y軸為正值。

加速度感應器可能是最為成熟的一種mems產品,市場上的加速度感應器種類很多。

手機中常用的加速度感應器有BOSCH(博世)的BMA系列,AMK的897X系列,ST的LIS3X系列等。

這些感應器一般提供±2G至±16G的加速度測量範圍,採用I2C或SPI介面和MCU相連,資料精度小於16bit。

2 磁力感應器

磁力感應器簡稱為M-sensor,返回x、y、z三軸的環境磁場資料。

該數值的單位是微特斯拉(micro-Tesla),用uT表示。

單位也可以是高斯(Gauss),1Tesla=10000Gauss。

硬體上一般沒有獨立的磁力感應器,磁力資料由電子羅盤感應器提供(E-compass)。

電子羅盤感應器同時提供下文的方向感應器資料。

3 方向感應器

方向感應器簡稱為O-sensor,返回三軸的角度資料,方向資料的單位是角度。

為了得到精確的角度資料,E-compass需要擷取G-sensor的資料,

經過計算生產O-sensor資料,否則只能擷取水平方向的角度。

方向感應器提供三個資料,分別為azimuth、pitch和roll。

azimuth:方位,返回水平時磁北極和Y軸的夾角,範圍為0°至360°。

0°=北,90°=東,180°=南,270°=西。

pitch:x軸和水平面的夾角,範圍為-180°至180°。

當z軸向y軸轉動時,角度為正值。

roll:y軸和水平面的夾角,由於曆史原因,範圍為-90°至90°。

當x軸向z軸移動時,角度為正值。

電子羅盤在擷取正確的資料前需要進行校準,通常可用8字校準法。

8字校準法要求使用者使用需要校準的裝置在空中做8字晃動,

原則上盡量多的讓裝置法線方向指向空間的所有8個象限。

手機中使用的電子羅盤晶片有AKM公司的897X系列,ST公司的LSM系列以及雅馬哈公司等等。

由於需要讀取G-sensor資料並計算出M-sensor和O-sensor資料,

因此廠商一般會提供一個後台daemon來完成工作,電子羅盤演算法一般是公司私人產權。

4 陀螺儀感應器

陀螺儀感應器叫做Gyro-sensor,返回x、y、z三軸的角加速度資料。

角加速度的單位是radians/second。

根據Nexus S手機實測:

水平逆時針旋轉,Z軸為正。

水平逆時針旋轉,z軸為負。

向左旋轉,y軸為負。

向右旋轉,y軸為正。

向上旋轉,x軸為負。

向下旋轉,x軸為正。

ST的L3G系列的陀螺儀感應器比較流行,iphone4和google的nexuss中使用該種感應器。

5 光線感應感應器

光線感應感應器檢測即時的光線強度,光強單位是lux,其物理意義是照射到單位面積上的光通量。

光線感應感應器主要用於Android系統的LCD自動亮度功能。

可以根據採樣到的光強數值即時調整LCD的亮度。

6 壓力感應器

壓力感應器返回當前的壓強,單位是百帕斯卡hectopascal(hPa)。

7 溫度感應器

溫度感應器返回當前的溫度。

8 接近感應器

接近感應器檢測物體與手機的距離,單位是厘米。

一些接近感應器只能返回遠和近兩個狀態,

因此,接近感應器將最大距離返回遠狀態,小於最大距離返回近狀態。

接近感應器可用於電話中時自動關閉LCD螢幕以節省電量。

一些晶片整合了接近感應器和光線感應器兩者功能。

下面三個感應器是Android2新提出的感應器類型,目前還不太清楚有哪些應用程式使用。

9 重力感應器

重力感應器簡稱GV-sensor,輸出重力資料。

在地球上,重力數值為9.8,單位是m/s^2。

座標系統與加速度感應器相同。

當裝置複位時,重力感應器的輸出與加速度感應器相同。

10 線性加速度感應器

線性加速度感應器簡稱LA-sensor。

線性加速度感應器是加速度感應器減去重力影響擷取的資料。

單位是m/s^2,座標系統與加速度感應器相同。

加速度感應器、重力感應器和線性加速度感應器的計算公式如下:

加速度 = 重力 + 線性加速度

11 旋轉向量感應器

旋轉向量感應器簡稱RV-sensor。

旋轉向量代表裝置的方向,是一個將座標軸和角度混合計算得到的資料。

RV-sensor輸出三個資料:

x*sin(theta/2)

y*sin(theta/2)

z*sin(theta/2)

sin(theta/2)是RV的數量級。

RV的方向與軸旋轉的方向相同。

RV的三個數值,與cos(theta/2)組成一個四元組。

RV的資料沒有單位,使用的座標系與加速度相同。

舉例:

1sensors_event_t.data[0]= x*sin(theta/2)2sensors_event_t.data[1] =y*sin(theta/2)3sensors_event_t.data[2] =z*sin(theta/2)4sensors_event_t.data[3]=cos(theta/2)

GV、LA和RV的數值沒有物理感應器可以直接給出,

需要G-sensor、O-sensor和Gyro-sensor經過演算法計算後得出。

演算法一般是感應器公司的私人產權。

參考:

1. android source codehardware\libhardware\include\hardwaresensor.h

2. http://www.dzsc.com/data/html/2010-11-29/87454.html

android中的11中常見感應器的使用方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.