




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第11章Android傳感器應(yīng)用開發(fā)
本章簡介本章將詳細介紹由Android提供的傳感器應(yīng)用開發(fā)技術(shù),包括與運動傳感器相關(guān)的應(yīng)用開發(fā)、與位置傳感器相關(guān)的應(yīng)用開發(fā)以及與環(huán)境傳感器相關(guān)的應(yīng)用開發(fā)技術(shù)。11.1Android傳感器框架11.2Android運動傳感器開發(fā)11.3Android位置傳感器開發(fā)11.4Android環(huán)境傳感器開發(fā)11.5傳感器應(yīng)用開發(fā)綜合案例11.6小結(jié)11.7習(xí)題
11.1Android傳感器框架
Andoid平臺主要支持三種類型的硬件傳感器:(1)運動傳感器(MotionSensors)(2)位置傳感器(PositionSensors)(3)環(huán)境傳感器(EnvironmentalSensors)Android傳感器框架提供了若干個類和接口幫助應(yīng)用程序開發(fā)與傳感器相關(guān)的各種任務(wù)。例如,可以使用傳感器框架完成下述任務(wù):獲取當(dāng)前設(shè)備支持的傳感器類型。獲取某個傳感器的具體信息,例如最大范圍、生產(chǎn)商、功耗和分辨率等。從傳感器獲取原始信息以及獲取信息的頻率。注冊或者注銷用于監(jiān)測傳感器變化的監(jiān)聽器。為方便對傳感器應(yīng)用的開發(fā),Android的傳感器框架又將允許訪問的傳感器劃分為兩類:硬件傳感器和軟件傳感器。硬件傳感器指內(nèi)建在Android設(shè)備中的硬件,它們直接測量具體數(shù)據(jù)并將其傳遞給應(yīng)用程序。軟件傳感器又叫虛擬傳感器或者合成傳感器。這類傳感器不是以硬件方式存在于設(shè)備中的,而是由軟件模擬而來,它們的數(shù)據(jù)來自一個或者多個硬件傳感器。傳感器類型用途TYPE_ACCELEROMETER硬件傳感器加速度探測TYPE_AMBIENT_TEMPERATURE硬件傳感器監(jiān)測環(huán)境溫度TYPE_GRAVITY軟件或硬件傳感器重力探測TYPE_GYROSCOPE硬件傳感器旋轉(zhuǎn)探測TYPE_LIGHT硬件傳感器控制屏幕亮度TYPE_LINEAR_ACCELERATION軟件或硬件傳感器探測某個方向的加速度TYPE_MAGNETIC_FIELD硬件傳感器創(chuàng)建羅盤TYPE_ORIENTATION軟件傳感器探測設(shè)備方位TYPE_PRESSURE硬件傳感器探測空氣壓力變化TYPE_PROXIMITY硬件傳感器用于監(jiān)測打電話時手機與耳朵的距離11.1.1標(biāo)識傳感器
識別傳感器的工作需要通過SensorManager對象來完成。可使用下述代碼獲取SensorManager的一個對象。privateSensorManagermSensorManager;...mSensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);通過SensorManager獲取當(dāng)前設(shè)備的傳感器列表的代碼如下: List<Sensor>deviceSensors=mSensorManager.getSensorList(Sensor.TYPE_ALL);可使用SensorManager的getDefaultSensor()方法獲取特定類型的傳感器對象。以下代碼演示了獲取磁場傳感器的方法:if(mSensorManager.getDefaultSensor(sensor.TYPE_MAGNETIC_FIELD)!=null){//獲取磁場傳感器成功}else{//獲取磁場傳感器失敗}11.1.2傳感器事件處理
傳感器事件監(jiān)聽器接口提供兩個方法:onAccuracyChanged()和onSensorChanged()方法,分別對傳感器的精度改變和傳感器的數(shù)值改變事件進行處理。11.2Android運動傳感器開發(fā)目前,Android支持的運動傳感器主要有以下三種:加速度傳感器重力傳感器陀螺儀11.2.1加速度傳感器加速度傳感器的類型常量是Sensor.TYPE_ACCELEROMETER。它將返回三個值,分別代表手持設(shè)備在X、Y、Z三個方向的加速度。需要指出的是,傳感器的坐標(biāo)系統(tǒng)與屏幕坐標(biāo)系統(tǒng)不同:傳感器坐標(biāo)系統(tǒng)的X軸沿屏幕向右,Y軸沿屏幕向上,Z軸則垂直于屏幕向外。圖11-1給出了傳感器的坐標(biāo)系統(tǒng)。圖11-1手機傳感器坐標(biāo)系統(tǒng)11.2.2重力傳感器重力傳感器的類型常量是Sensor.TYPE_GRAVITY。重力傳感器與加速度傳感器使用同一套坐標(biāo)系,它會返回一個三維向量,分別用于表示X、Y、Z軸的重力大小。AndroidSDK為表示地球重力,專門定義了一個如下所示的常量。PublicstaticfinalfloatGRAVITY_EARTH=9.80665f;可使用下述代碼獲得設(shè)備中的一個重力傳感器對象:privateSensorManagermSensorManager;privateSensormSensor;...mSensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);mSensor=mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);11.2.3陀螺儀陀螺儀的類型常量是Sensor.TYPE_GYROSCOPE。陀螺儀用于感應(yīng)移動設(shè)備的旋轉(zhuǎn)角速度。陀螺儀傳感器可返回設(shè)備繞X、Y、Z三個坐標(biāo)軸的旋轉(zhuǎn)速度。旋轉(zhuǎn)速度的單位是rad/s,旋轉(zhuǎn)速度為正值代表逆時針旋轉(zhuǎn),負值代表順時針旋轉(zhuǎn)。關(guān)于陀螺儀傳感器返回的三個角速度說明如下:Values[0]:繞X軸旋轉(zhuǎn)的角速度。Values[1]:繞Y軸旋轉(zhuǎn)的角速度。Values[2]:繞Z軸旋轉(zhuǎn)的角速度。11.3Android位置傳感器開發(fā)目前,Android支持的位置傳感器主要有以下三種:磁場傳感器方位傳感器距離傳感器11.3.1磁場傳感器在磁場傳感器的類型常量是Sensor.TYPE_MAGNETIC_FIELD。磁場傳感器用于測量手持設(shè)備外部地球磁場的強度。磁場傳感器會返回三個測量數(shù)據(jù),分別代表周圍磁場分解到X、Y、Z三個方向的磁場分量。通常情況下,這些數(shù)據(jù)并不會直接使用,而是和旋轉(zhuǎn)向量傳感器、加速度傳感器的數(shù)據(jù)一起用于計算設(shè)備的位置數(shù)據(jù)。可使用下述代碼獲得設(shè)備中的一個磁場傳感器對象:privateSensorManagermSensorManager;privateSensormSensor;...mSensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);mSensor=mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);11.3.2方向角傳感器方位傳感器的類型常量是Sensor.TYPE_ORIENTATION。方位傳感器用于監(jiān)測設(shè)備相對于地球坐標(biāo)系的位置。方位傳感器從Android2.2(APILevel8)就被淘汰,在之后的設(shè)備上的訪問傳感器都是軟件傳感器。方位傳感器可以返回三個角度,這三個角度即可確定手持設(shè)備的擺放狀態(tài)。關(guān)于方位傳感器返回的三個角度說明如下:Values[0]:表示手機頂部朝向與正北方的夾角。當(dāng)手機繞Z軸旋轉(zhuǎn)時,該角度值會發(fā)生改變。例如,當(dāng)該角度為0時,表面手機頂部朝向正北;當(dāng)該角度為90°時,表面手機頂部朝向正東;當(dāng)該角度為180°時,表面手機頂部朝向正南;當(dāng)該角度為270°時,表面手機頂部朝向正西。Values[1]:表示傾斜度或手機翹起的程度。當(dāng)手機繞X軸傾斜時,該角度值發(fā)生變化,該角度的取值范圍為-180°~180°。假設(shè)手機屏幕朝上水平放置在桌面上,如果桌面是完全水平的,該值應(yīng)該四0。假如從手機頂部開始抬起,直到將手機沿X軸旋轉(zhuǎn)180°,在這個旋轉(zhuǎn)過程中,該角度值會從0°變化到-180°。也就是說,從手機頂部抬起時,該角度的值會逐漸減小,直到等于-180°,如果從手機底部開始抬起,直到將手機沿X軸旋轉(zhuǎn)180°,該角度值會從0°變化到180°。也就是說,從手機底部抬起時,該角度的值會逐漸增大,直到等于180°。Values[2]:表示手機左側(cè)或右側(cè)翹起的角度。當(dāng)手機繞Y軸傾斜時,該角度值發(fā)生變化。該角度的取值范圍時-90°~90°。假設(shè)將手機屏幕朝上水平放置在桌面上,如果桌面時完全水平的,該角度值應(yīng)為0°。假如將手機左側(cè)逐漸抬起,直到將手機沿Y軸旋轉(zhuǎn)90°,在這個旋轉(zhuǎn)過程中,該角度值會從0°變化到-90°。也就是說,從手機左側(cè)抬起時,該角度的值會逐漸減少,直到-90°,如果從手機右側(cè)開始抬起,直到將手機沿Y軸旋轉(zhuǎn)90°,該角度的值會從0°變化到90°。也就是說,從手機右側(cè)抬起時,該角度的值會逐漸增大,直到等于90°。11.3.3距離傳感器距離傳感器的類型常量是Sensor.TYPE_PROXIMITY。距離傳感器用于探測Android設(shè)備與其他物體的距離,例如手機與耳朵的距離??墒褂孟率龃a獲得設(shè)備中的一個方位傳感器對象:11.4.1Android環(huán)境傳感器開發(fā)目前,Android支持的環(huán)境傳感器主要有以下三種:(1)溫度傳感器(2)光線傳感器(3)壓力傳感器11.4.1溫度傳感器溫度傳感器的類型常量是Sensor.TEMPERATURE。溫度傳感器用于測量手持設(shè)備所處環(huán)境的強度。溫度傳感器會返回一個測量數(shù)據(jù),代表手持設(shè)備周圍的溫度,單位是攝氏度。
可使用下述代碼獲得設(shè)備中的一個溫度傳感器對象:privateSensorManagermSensorManager;privateSensormSensor;...mSensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);mSensor=mSensorManager.getDefaultSensor(Sensor.TEMPERATURE);11.4.2光線傳感器光線傳感器的類型常量是Sensor.LIGHT。光線傳感器用于測量手持設(shè)備所處環(huán)境的光照強度。光線傳感器會返回一個測量數(shù)據(jù),代表手持設(shè)備周圍的光強,單位是勒克斯(lux)??墒褂孟率龃a獲得設(shè)備中的一個光線傳感器對象:privateSensorManagermSensorManager;privateSensormSensor;...mSensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);mSensor=mSensorManager.getDefaultSensor(Sensor.LIGHT);11.4.3壓力傳感器壓力傳感器的類型常量是Sensor.PRESSURE。壓力傳感器用于測量手持設(shè)備所處環(huán)境的壓力。壓力傳感器會返回一個測量數(shù)據(jù),代表手持設(shè)備周圍的壓力大小,單位是百帕斯卡(hPa)。11.5傳感器應(yīng)用開發(fā)綜合案例對傳感器的支持是Android系統(tǒng)的特征之一,通過使用傳感器可輕易開發(fā)出各種有趣的應(yīng)用。下面使用傳感器開發(fā)出一個指南針應(yīng)用。開發(fā)指南針的思路如下:先準備一張指南針圖片,該圖片的上方向指針指向正北;然后,利用方向傳感器傳回來的第一個參數(shù)值是手機繞Z軸轉(zhuǎn)過的角度(即手機頂部與正北的夾角),通過在應(yīng)用程序中檢測該夾角并使指南針圖片反轉(zhuǎn)相應(yīng)角度,即可開發(fā)出指南針應(yīng)用程序。11.6小結(jié)本章主要介紹了Android傳感器應(yīng)用開發(fā)技術(shù),包括運動傳感器應(yīng)用開發(fā)、位置傳感器應(yīng)用開發(fā)以及環(huán)境傳感器應(yīng)用開發(fā)技術(shù)。在學(xué)習(xí)上述內(nèi)容時,應(yīng)重點掌握AndroidSDK提供的傳感器開發(fā)框架,包括如何獲取傳感器對象、如何使用SensorManager為傳感器注冊監(jiān)聽器以及如何使用SensorListener采集傳感器數(shù)據(jù)。此外,還應(yīng)了解由典型傳感器采集到的數(shù)據(jù)內(nèi)容及含義。11.7習(xí)題一、填空題1.Android平臺主要支持的硬件傳感器有三種類型:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 培訓(xùn)會計知識
- 2025年度福建省職業(yè)院校技能大賽中職組(母嬰照護賽項)考試題庫(含答案)
- 江西省撫州市臨川第一中學(xué)2024-2025學(xué)年高一下學(xué)期3月月考英語試題(原卷版+解析版)
- 人事部員工工作總結(jié)
- 小學(xué)新教師培訓(xùn)總結(jié)
- 藝人明星形象代言肖像權(quán)使用合同
- 企業(yè)日常管理顧問合同
- 2025合同訂立與生效的法律規(guī)定
- 家居裝修裝飾合同
- 消防噴淋煙感改造工程合同范本
- 全宋詞目錄完整版本
- 諾基亞改革與失敗案例分析
- 福建師范大學(xué)地理科學(xué)學(xué)院859人文地理學(xué)歷年考研真題匯編(含部分答案)
- 單原子催化劑
- 九十年代生活
- GB/T 20688.4-2023橡膠支座第4部分:普通橡膠支座
- bilibili內(nèi)容審核筆試題
- 手術(shù)室護理實踐指南之術(shù)中保溫(手術(shù)科培訓(xùn)課件)術(shù)中低體溫的預(yù)防
- 學(xué)習(xí)探究診斷 化學(xué) 必修二
- 人教版化學(xué)九年級下冊第九單元-溶液-課件
- 肌肉牽拉技術(shù)PPT
評論
0/150
提交評論