Android傳感器(第一篇)

Android傳感器定義

Android 傳感器相關(guān)術(shù)語(yǔ)微機(jī)電傳感器(MEMS)MEMS 通常制作在規(guī)格很小的硅芯片上,借用了計(jì)算機(jī)芯片的制作技術(shù)。通常來說,所有的 Android 傳感器都使用了這些技術(shù),但是從技術(shù)的角度來說,MEMS 指的是在該傳感器的部分設(shè)計(jì)中納入了物理移動(dòng)或震動(dòng),例如壓力傳感器、加速度計(jì)、陀螺儀等,也有可能是指南針,這些才是真正意義上的 MEMS。

Android傳感器分類

Android 中引用的傳感器大致分為兩種,原始傳感器(物理傳感器)和合成傳感器(虛擬傳感器)。原始傳感器給出從傳感器獲得的原始數(shù)據(jù),并且一個(gè)原始傳感器對(duì)應(yīng)一個(gè) Android 設(shè)備中實(shí)際存在的的物理傳感器組件。合成傳感器通過結(jié)合多個(gè)原始傳感器的原始數(shù)據(jù),或者修改原始傳感器的數(shù)據(jù),在應(yīng)用代碼和和底層設(shè)備之間提供一個(gè)抽象層,并為上層業(yè)務(wù)提供服務(wù)。二元傳感器(Binary Sensor)二元傳感器是一種只輸出兩個(gè)值其中之一的傳感器。大多數(shù)的距離傳感器和光傳感器都屬于二元傳感器,因?yàn)樗麄冎惠敵鲞h(yuǎn)和近的測(cè)量。連續(xù)傳感器(Continuous Sensor)連續(xù)傳感器測(cè)量從最小值到最大值之間的所有的數(shù)據(jù)。動(dòng)態(tài)范圍(Dynamic Range)動(dòng)態(tài)范圍指的是傳感器能測(cè)量的值的范圍。例如光傳感器的動(dòng)態(tài)范圍可以是1~~10000 lux。飽和狀態(tài)(Saturation)飽和狀態(tài)在傳感器視圖感測(cè)一個(gè)超出它的最大測(cè)量值時(shí)產(chǎn)生。分辨率(Resolution)在很多情況下,分辨率表示實(shí)際能夠檢測(cè)到的最小物理差值。該差值受到噪音的限制。分辨率有時(shí)用來描述在考慮系統(tǒng)噪音的情況下,兩個(gè)信號(hào)之間能夠檢測(cè)出的最小差值。在 Android 系統(tǒng)中,分辨率是一個(gè)獨(dú)立于傳感器噪音之外的數(shù)字分辨率。Android 傳感器輸出數(shù)字信號(hào),例如常見的有8位(256個(gè)可能的值)、10位(1024個(gè)可能的值)和12位(4096個(gè)可能的值)加速度計(jì)。最大范圍除以可能的值的個(gè)數(shù)即為輸出的分辨率(通過 Sensor.getResolution() 獲取的值)。采樣頻率(Sampling Frequency)采樣頻率是兩次測(cè)量間的時(shí)間間隔,以赫茲(Hertz)為單位。在注冊(cè)監(jiān)聽器的時(shí)候,可以指定監(jiān)聽器的延遲和測(cè)量速率??梢栽O(shè)置的速率值如下(SensorManager 中):
SENSOR_DELAY_FASTEST
SENSOR_DELAY_GAMESENSOR_DELAY_UI
SENSOR_DELAY_NORMAL(默認(rèn)值)

Android傳感器API

Android SDK 中傳感器相關(guān)的類Android SDK 提供的與傳感器相關(guān)的類有(位于 android.hardware 包):Sensor: 表示傳感器的類,它保存有傳感器信息:最大范圍(Maximum range)最小范圍(Minimum range)名稱(Name)功率(Power)分辨率(Resolution)類型(* TYPE)供應(yīng)商(Vendor)版本(Version)SensorEvent:表示傳感器事件,它可以保存?zhèn)鞲衅鞯闹?,傳感器類型,時(shí)間戳等信息;SensorEventListener: 提供回調(diào)以通知應(yīng)用傳感器相關(guān)事件的接口。為了能夠接收這些事件,應(yīng)用需要?jiǎng)?chuàng)建一個(gè)類實(shí)現(xiàn) SensorEventListener 接口,并將其注冊(cè)到 SensorManager。
SensorManager: SensorManager 讓你可以訪問設(shè)備(手機(jī))的全部傳感器。和其他的系統(tǒng)服務(wù)一樣,它允許應(yīng)用注冊(cè)或注銷傳感器相關(guān)事件。一旦注冊(cè)成功,應(yīng)用將接收到從傳感器傳來的數(shù)據(jù)。除了允許應(yīng)用注冊(cè)以獲取傳感器數(shù)據(jù)以外,SensorManager 還提供處理傳感器數(shù)據(jù)的方法。
SensorEventSensorEvent 是一個(gè)數(shù)據(jù)結(jié)構(gòu),包含了傳感器輸出到應(yīng)用的信息。accuracy 傳感器輸出的精度分為四個(gè)等級(jí)。在這種情況下,accuracy 指的就是輸出數(shù)據(jù)的可靠程度,而不是與物理值的接近程度??赡艿?accuracy 值有如下幾種(SensorManage 中):
SENSOR_STATUS_ACCURACY_HIGH
SENSOR_STATUS_ACCURACY_MEDIUM
SENSOR_STATUS_ACCURACY_LOW
SENSOR_STATUS_UNRELIABLE精確度不可靠并不意味著傳感器的損壞,有可能是周圍環(huán)境的變化而引起的。
sensor 傳感器對(duì)象 Sensor 的對(duì)象。timestamp SensorEvent 發(fā)生的時(shí)間,以毫秒為單位。values 表示傳感器數(shù)據(jù)的數(shù)組。數(shù)據(jù)的大小以及數(shù)據(jù)的含義取決于產(chǎn)生數(shù)據(jù)的傳感器。

Android傳感器類型

目前 常用Android 設(shè)備支持的傳感器類型有很多,但是有些手機(jī)設(shè)備支持的類型也很少,如下:

  • TYPE_ACCELEROMETER 加速度傳感器 又叫 G-sensor,該數(shù)值包含地心引力的影響,單位是 m/s2,測(cè)量應(yīng)用于設(shè)備 x 、y、z 軸上的加速度。將手機(jī)平放在桌面上,x 軸默認(rèn)為0,y 軸默認(rèn)0,z 軸默認(rèn)9.81。將手機(jī)朝下放在桌面上,z 軸為-9.81。將手機(jī)向左傾斜,x 軸為正值。將手機(jī)向右傾斜,x 軸為負(fù)值。將手機(jī)向上傾斜,y 軸為負(fù)值。將手機(jī)向下傾斜,y 軸為正值。
  • TYPE_AMBIENT_TEMPERATURE 溫度傳感器 ,單位是 ℃,返回當(dāng)前的溫度。
  • TYPE_GAME_ROTATION_VECTOR 用來探測(cè)運(yùn)動(dòng)而不必受到電磁干擾的影響,因?yàn)樗⒉灰蕾囉诖疟睒O。
  • TYPE_GEOMAGNETIC_ROTATION_VECTOR 地磁旋轉(zhuǎn)矢量傳感器 ,提供手機(jī)的旋轉(zhuǎn)矢量,當(dāng)手機(jī)處于休眠狀態(tài)時(shí),仍可以記錄設(shè)備的方位。
  • TYPE_GRAVITY 重力傳感器 簡(jiǎn)稱 GV-sensor,單位是 $m/s^2%,測(cè)量應(yīng)用于設(shè)備X、Y、Z軸上的重力。在地球上,重力數(shù)值為9.8,
  • TYPE_GYROSCOPE 陀螺儀傳感器 叫做Gyro-sensor,返回x、y、z三軸的角加速度數(shù)據(jù)。單位是 radians/second。
  • TYPE_GYROSCOPE_UNCALIBRATED 未校準(zhǔn)陀螺儀傳感器 ,提供原始的、未校準(zhǔn)、補(bǔ)償?shù)耐勇輧x數(shù)據(jù),用于后期處理和融合定位數(shù)據(jù)。
  • TYPE_LIGHT 光線感應(yīng)傳感器檢測(cè)實(shí)時(shí)的光線強(qiáng)度 ,光強(qiáng)單位是lux,其物理意義是照射到單位面積上的光通量。
  • TYPE_LINEAR_ACCELERATION 線性加速度傳感器 簡(jiǎn)稱LA-sensor。線性加速度傳感器是加速度傳感器減去重力影響獲取的數(shù)據(jù)。單位是 m/s2。
  • TYPE_MAGNETIC_FIELD 磁力傳感器 簡(jiǎn)稱為M-sensor,返回 x、y、z 三軸的環(huán)境磁場(chǎng)數(shù)據(jù)。該數(shù)值的單位是微特斯拉(micro-Tesla),用uT表示。單位也可以是高斯(Gauss),1Tesla=10000Gauss。硬件上一般沒有獨(dú)立的磁力傳感器,磁力數(shù)據(jù)由電子羅盤傳感器提供(E-compass)。電子羅盤傳感器同時(shí)提供方向傳感器數(shù)據(jù)。
  • TYPE_MAGNETIC_FIELD_UNCALIBRATED 未校準(zhǔn)磁力傳感器 ,提供原始的、未校準(zhǔn)的磁場(chǎng)數(shù)據(jù)。
  • TYPE_ORIENTATION 方向傳感器 簡(jiǎn)稱為O-sensor,返回三軸的角度數(shù)據(jù),方向數(shù)據(jù)的單位是角度。為了得到精確的角度數(shù)據(jù),E-compass 需要獲取 G-sensor 的數(shù)據(jù),經(jīng)過計(jì)算生產(chǎn) O-sensor 數(shù)據(jù),否則只能獲取水平方向的角度。方向傳感器提供三個(gè)數(shù)據(jù),分別為azimuth、pitch和roll:azimuth: 方位,返回水平時(shí)磁北極和 Y 軸的夾角,范圍為0°至360°。0°為北,90°為東,180°為南,270°為西。pitch: x 軸和水平面的夾角,范圍為-180°至180°。當(dāng) z 軸向 y 軸轉(zhuǎn)動(dòng)時(shí),角度為正值。roll: y 軸和水平面的夾角,由于歷史原因,范圍為-90°至90°。當(dāng) x 軸向 z 軸移動(dòng)時(shí),角度為正值。
  • TYPE_PRESSURE 壓力傳感器 ,單位是hPa(百帕斯卡),返回當(dāng)前環(huán)境下的壓強(qiáng) 。
  • TYPE_PROXIMITY 接近傳感器檢測(cè)物體與手機(jī)的距離 ,單位是厘米。一些接近傳感器只能返回遠(yuǎn)和近兩個(gè)狀態(tài),因此,接近傳感器將最大距離返回遠(yuǎn)狀態(tài),小于最大距離返回近狀態(tài)。
  • TYPE_RELATIVE_HUMIDITY 濕度傳感器 ,單位是 %,來測(cè)量周圍環(huán)境的相對(duì)濕度。
  • TYPE_ROTATION_VECTOR 旋轉(zhuǎn)矢量傳感器 簡(jiǎn)稱RV-sensor。旋轉(zhuǎn)矢量代表設(shè)備的方向,是一個(gè)將坐標(biāo)軸和角度混合計(jì)算得到的數(shù)據(jù)。RV-sensor輸出三個(gè)數(shù)據(jù):xsin(theta/2)ysin(theta/2)z*sin(theta/2)sin(theta/2)是 RV 的數(shù)量級(jí)。RV 的方向與軸旋轉(zhuǎn)的方向相同。RV 的三個(gè)數(shù)值,與cos(theta/2)組成一個(gè)四元組。
  • TYPE_SIGNIFICANT_MOTION 特殊動(dòng)作觸發(fā)傳感器。
  • TYPE_STEP_COUNTER 計(jì)步傳感器 ,用于記錄激活后的步伐數(shù)。
  • TYPE_STEP_DETECTOR 步行檢測(cè)傳感器 ,用戶每走一步就觸發(fā)一次事件。
  • TYPE_TEMPERATURE 溫度傳感器 ,目前已被* TYPE_AMBIENT_TEMPERATURE替代。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 傳感器學(xué)習(xí) 通過手機(jī)來感受溫度、壓力、重力和光線等。 在Android2.3 gingerbread系統(tǒng)中,goo...
    0a61c9729dbc閱讀 945評(píng)論 0 3
  • 傳感器 傳感器Sensor是一種檢測(cè)裝置,能感受到被測(cè)量的信息,并能將感受到的信息,按一定規(guī)律變換成為電信號(hào)或其他...
    Reathin閱讀 6,579評(píng)論 0 5
  • 最近在搞一個(gè)自己的App,突發(fā)一個(gè)想法,給App加一個(gè)搖一搖隨機(jī)查看圖片的功能,這樣可以使得用戶在使用App的時(shí)候...
    _SOLID閱讀 19,528評(píng)論 1 31
  • 2017.01.18 無(wú)結(jié)果的等待真的很傷腦傷神,不是為了等李玉振吃飯,我今天可以選擇跟夢(mèng)月去吃大餐,可以去跟煥煥...
    4月的小猴子閱讀 237評(píng)論 0 1
  • 我是一個(gè)念舊的人,我相信有很多人也有這個(gè)習(xí)慣,所以我無(wú)法輕易定論這個(gè)習(xí)慣好或不好。但是我想把這些年來自己因...
    _悸閱讀 472評(píng)論 0 2

友情鏈接更多精彩內(nèi)容