產(chǎn)品中心 應(yīng)用方案 技術(shù)文摘質(zhì)量保證產(chǎn)品選型 下載中心業(yè)內(nèi)動態(tài) 選型幫助 品牌介紹 產(chǎn)品一覽 聯(lián)系我們

電話:010-84775646
當(dāng)前位置:首頁 >> 業(yè)內(nèi)動態(tài) >> 詳細(xì)內(nèi)容
Android 傳感器開發(fā) 完全解析
來源:賽斯維傳感器網(wǎng) 發(fā)表于 2016/11/24

  

  本篇將通過幾個最常見的傳感器,滲透式的教會大家如何使用這些傳感器,帶領(lǐng)大家完成這部分的進(jìn)階提高。讓每一位Android開發(fā)者都對傳感器的使用變得游刃有余。


  1、Android的三大類傳感器   


  Android傳感器按大方向劃分大致有這么三類傳感器:動作(Motion)傳感器、環(huán)境(Environmental)傳感器、位置(Position)傳感器。


  1)動作傳感器


  這類傳感器在三個軸(x、y、z)上測量加速度和旋轉(zhuǎn)角度。包括如下幾個傳感器:


  加速(accelerometer)傳感器

  重力(gravity)傳感器

  陀螺儀(gyroscope)傳感器

  旋轉(zhuǎn)向量(rotational vector )傳感器


  2)環(huán)境傳感器


  這類傳感器可以測量不同環(huán)境的參數(shù),例如,周圍環(huán)境的空氣溫度和壓強(qiáng)、光照強(qiáng)度和濕度。包括如下幾個傳感器:


  濕度(barometer)傳感器

  光線(photometer)傳感器

  溫度(thermometer)傳感器


  3)位置傳感器


  這類傳感器可以測量設(shè)備的物理位置。包括如下幾個傳感器:


  方向(orientation)傳感器

  磁力(magnetometer)傳感器


  了解后我們就開始進(jìn)入傳感器的編程工作了,接下來我們看一下Android為我們提供的傳感器框架(Android sensor framework,簡稱ASF)。


  2、Android傳感器框架   


  Android SDK為我們提供了ASF,可以用來訪問當(dāng)前Android設(shè)備內(nèi)置的傳感器。ASF提供了很多類和接口,幫助我們完成各種與傳感器有關(guān)的任務(wù)。例如:


  1)確定當(dāng)前Android設(shè)備內(nèi)置了哪些傳感器。

  2)確定某一個傳感器的技術(shù)指標(biāo)。

  3)獲取傳感器傳回來的數(shù)據(jù),以及定義傳感器回傳數(shù)據(jù)的精度。

  4)注冊和注銷傳感器事件監(jiān)聽器,這些監(jiān)聽器用于監(jiān)聽傳感器的變化,通常從傳感器回傳的數(shù)據(jù)需要利用這些監(jiān)聽器完成。


  ASF允許我們訪問很多傳感器類型,這些傳感器有一些是基于硬件的傳感器,還有一些是基于軟件的傳感器;谟布膫鞲衅骶褪侵苯右孕酒问角度氲紸ndroid設(shè)備中,這些傳感器直接從外部環(huán)境獲取數(shù)據(jù)。


  基于軟件的傳感器并不是實(shí)際的硬件芯片,基于軟件的傳感器傳回的數(shù)據(jù)本質(zhì)上也來自于基于硬件的傳感器,只是這些數(shù)據(jù)通常會經(jīng)過二次加工。所以基于軟件的傳感器也可以稱為虛擬(virtual)傳感器或合成(synthetic)傳感器。


  Android對每個設(shè)備的傳感器都進(jìn)行了抽象,其中SensorManger類用來控制傳感器,Sensor用來描述具體的傳感器,SensorEventListener用來監(jiān)聽傳感器值的改變。


  1)SensorManager類


  用于創(chuàng)建sensor service的實(shí)例。該類提供了很多用于訪問和枚舉傳感器,注冊和注銷傳感器監(jiān)聽器的方法。而且還提供了與傳感器精度、掃描頻率、校正有關(guān)的常量。


  2)Sensor類


  Sensor類為我們提供了一些用于獲取傳感器技術(shù)參數(shù)的方法。如版本、類型、生產(chǎn)商等。例如所有傳感器的TYPE類型如下:


  注意:1-8是硬件傳感器,9是軟件傳感器,其中方向傳感器的數(shù)據(jù)來自重力和磁場傳感器,10-12是硬件或軟件傳感器。


  3)SensorEvent類


  系統(tǒng)使用該類創(chuàng)建傳感器事件對象。該對象可以提供與傳感器事件有關(guān)的信息。傳感器事件對象包括的信息有原始的傳感器回傳數(shù)據(jù)、傳感器類型、數(shù)據(jù)的精度以及觸發(fā)事件的時間。


  4)SensorEventListener接口


  該接口包含兩個回調(diào)方法,當(dāng)傳感器的回傳值或精度發(fā)生變化時,系統(tǒng)會調(diào)用這兩個回調(diào)方法。


  3、獲取傳感器技術(shù)參數(shù)   


  下來我們編寫代碼來獲取一下自己手機(jī)的傳感器技術(shù)參數(shù)。


  先運(yùn)行一下看看效果:


  下來我們分別看一下動作傳感器、環(huán)境傳感器和位置傳感器的組成及使用方法。


  4、動作傳感器的組成及使用方法   


  所有的動作傳感器都會返回三個浮點(diǎn)數(shù)的值(通過長度為3的數(shù)組返回),但對于不同的傳感器,這三個只是意義不同。


  例如,對于加速傳感器,會返回三個坐標(biāo)軸的數(shù)據(jù)。對于陀螺儀傳感器,會返回三個坐標(biāo)軸的旋轉(zhuǎn)角速度。


  注意:動作傳感器本身一般并不會用于監(jiān)測設(shè)備的位置,關(guān)于設(shè)備的位置需要用其他類型的傳感器進(jìn)行監(jiān)測,例如,磁場傳感器


  1)加速度傳感器


  加速度傳感器需要結(jié)合重力傳感器使用,以減少加速度受重力的影響。首先需要實(shí)現(xiàn)SensorEventListener接口,添加回調(diào)方法,然后獲取傳感器SensorManager對象,注冊傳感器,然后我們就可以監(jiān)聽傳感器的變化了。示例代碼如下:


  5、位置傳感器的組成及使用方法   


  Android提供了磁場傳感器和方向傳感器用于確定設(shè)備的位置,還提供了測量設(shè)備正面到某一個鄰近物體距離的傳感器(鄰近傳感器)。


  鄰近傳感器在手機(jī)中很常見。像接聽電話時手機(jī)屏幕滅屏就是使用的鄰近傳感器。方向傳感器是基于軟件的,該傳感器的回傳數(shù)據(jù)來自加速度傳感器和磁場傳感器。


  位置傳感器對于確定設(shè)備在真實(shí)世界中的物理位置非常有用。例如,可以組合磁場傳感器和加速度傳感器測量設(shè)備相對于地磁北極的位置,還可以利用方向傳感器確定當(dāng)前設(shè)備相對于自身參照系的位置。


  磁場傳感器和方向傳感器都返回值3個值(SensorEvent.values),而鄰近傳感器只返回1個值。


  下面我們具體看一下他們的返回值:


  方向傳感器:


  SensorEvent.values[0]:繞著Z軸旋轉(zhuǎn)的角度。如果Y軸(正常拿手機(jī)的方向)正對著北方,該值是0,如果Y軸指向南方,改值是180,Y軸指向東方,該值是90,如果Y軸指向西方,該值是270。


  SensorEvent.values[1]:繞著X軸旋轉(zhuǎn)的度數(shù)。當(dāng)從Z軸正方向朝向Y軸正方向,改值為正值。反之,為負(fù)值。該值在180至-180之間變動。


  SensorEvent.values[2]:繞著Y軸旋轉(zhuǎn)的度數(shù)。當(dāng)從Z軸正方向朝向X軸正方向,改值為正值。反之,為負(fù)值。該值在180至-180之間變動。


  磁場傳感器:

  SensorEvent.values[0]:沿著X軸的磁力(μT,millitesla)

  SensorEvent.values[1]:沿著Y軸的磁力(μT,millitesla)

  SensorEvent.values[2]:沿著Y軸的磁力(μT,millitesla)


  鄰近傳感器

  SensorEvent.values[0]:手機(jī)正面距離鄰近物理的距離(CM)


  1)臨近傳感器


  這里以臨近傳感器作為示例工程實(shí)現(xiàn)一下,其他傳感器實(shí)現(xiàn)大同小異。


  6、環(huán)境傳感器的組成及使用方法   


  Android提供了用于檢測不同的外部環(huán)境的傳感器。例如,可以檢測周圍空氣的濕度、光線、空氣的壓強(qiáng)和溫度,這些傳感器都是基于硬件的傳感器。除了光線傳感器外,其他傳感器在普通的Android設(shè)備中很少見。


  所以如果使用環(huán)境傳感器,最好運(yùn)行時對當(dāng)前Android設(shè)備所支持的傳感器進(jìn)行檢測。


  1)環(huán)境傳感器的返回值


  大多數(shù)動作傳感器和位置傳感器都返回多個值,而所有的環(huán)境傳感器都只返回一個值:


  注意:環(huán)境傳感器返回的值很少受到雜音的干擾,而動作和位置傳感器經(jīng)常需要消除雜音的影響。例如,加速度傳感器要消除重力對其回傳值的影響。


  2)光線傳感器回傳數(shù)據(jù)


  環(huán)境傳感器的使用方法與動作、位置傳感器大同小異,在此不再贅述。


  轉(zhuǎn)載請注明來源:賽斯維傳感器網(wǎng)(mizp.cn)


     如果本文收錄的圖片文字侵犯了您的權(quán)益,請及時與我們聯(lián)系,我們將在24內(nèi)核實(shí)刪除,謝謝!
  產(chǎn)品查找
應(yīng)用方案

加速計聲波傳感器微熔式力傳感器Schaevitz RV工業(yè)稱重傳感器Shcaevitz LV板裝表貼式壓力傳感器板載式壓力傳感器微熔式不銹鋼隔離壓力變送汽車碰撞專用加速度計

精品推薦
首頁 | 企業(yè)簡介 | 聯(lián)系我們 | 常見問題 | 友情鏈接 | 網(wǎng)站導(dǎo)航 | copyright©2007-2010,sensorway.cn.All Rights Reserved.京ICP備07023885號