Android應(yīng)用程序開發(fā) 課件 第11章 Android傳感器應(yīng)用開發(fā)_第1頁
Android應(yīng)用程序開發(fā) 課件 第11章 Android傳感器應(yīng)用開發(fā)_第2頁
Android應(yīng)用程序開發(fā) 課件 第11章 Android傳感器應(yīng)用開發(fā)_第3頁
Android應(yīng)用程序開發(fā) 課件 第11章 Android傳感器應(yīng)用開發(fā)_第4頁
Android應(yīng)用程序開發(fā) 課件 第11章 Android傳感器應(yīng)用開發(fā)_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第11章Android傳感器應(yīng)用開發(fā)

本章簡介本章將詳細(xì)介紹由Android提供的傳感器應(yīng)用開發(fā)技術(shù),包括與運(yùn)動傳感器相關(guān)的應(yīng)用開發(fā)、與位置傳感器相關(guān)的應(yīng)用開發(fā)以及與環(huán)境傳感器相關(guān)的應(yīng)用開發(fā)技術(shù)。11.1Android傳感器框架11.2Android運(yùn)動傳感器開發(fā)11.3Android位置傳感器開發(fā)11.4Android環(huán)境傳感器開發(fā)11.5傳感器應(yīng)用開發(fā)綜合案例11.6小結(jié)11.7習(xí)題

11.1Android傳感器框架

Andoid平臺主要支持三種類型的硬件傳感器:(1)運(yùn)動傳感器(MotionSensors)(2)位置傳感器(PositionSensors)(3)環(huán)境傳感器(EnvironmentalSensors)Android傳感器框架提供了若干個(gè)類和接口幫助應(yīng)用程序開發(fā)與傳感器相關(guān)的各種任務(wù)。例如,可以使用傳感器框架完成下述任務(wù):獲取當(dāng)前設(shè)備支持的傳感器類型。獲取某個(gè)傳感器的具體信息,例如最大范圍、生產(chǎn)商、功耗和分辨率等。從傳感器獲取原始信息以及獲取信息的頻率。注冊或者注銷用于監(jiān)測傳感器變化的監(jiān)聽器。為方便對傳感器應(yīng)用的開發(fā),Android的傳感器框架又將允許訪問的傳感器劃分為兩類:硬件傳感器和軟件傳感器。硬件傳感器指內(nèi)建在Android設(shè)備中的硬件,它們直接測量具體數(shù)據(jù)并將其傳遞給應(yīng)用程序。軟件傳感器又叫虛擬傳感器或者合成傳感器。這類傳感器不是以硬件方式存在于設(shè)備中的,而是由軟件模擬而來,它們的數(shù)據(jù)來自一個(gè)或者多個(gè)硬件傳感器。傳感器類型用途TYPE_ACCELEROMETER硬件傳感器加速度探測TYPE_AMBIENT_TEMPERATURE硬件傳感器監(jiān)測環(huán)境溫度TYPE_GRAVITY軟件或硬件傳感器重力探測TYPE_GYROSCOPE硬件傳感器旋轉(zhuǎn)探測TYPE_LIGHT硬件傳感器控制屏幕亮度TYPE_LINEAR_ACCELERATION軟件或硬件傳感器探測某個(gè)方向的加速度TYPE_MAGNETIC_FIELD硬件傳感器創(chuàng)建羅盤TYPE_ORIENTATION軟件傳感器探測設(shè)備方位TYPE_PRESSURE硬件傳感器探測空氣壓力變化TYPE_PROXIMITY硬件傳感器用于監(jiān)測打電話時(shí)手機(jī)與耳朵的距離11.1.1標(biāo)識傳感器

識別傳感器的工作需要通過SensorManager對象來完成。可使用下述代碼獲取SensorManager的一個(gè)對象。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)聽器接口提供兩個(gè)方法:onAccuracyChanged()和onSensorChanged()方法,分別對傳感器的精度改變和傳感器的數(shù)值改變事件進(jìn)行處理。11.2Android運(yùn)動傳感器開發(fā)目前,Android支持的運(yùn)動傳感器主要有以下三種:加速度傳感器重力傳感器陀螺儀11.2.1加速度傳感器加速度傳感器的類型常量是Sensor.TYPE_ACCELEROMETER。它將返回三個(gè)值,分別代表手持設(shè)備在X、Y、Z三個(gè)方向的加速度。需要指出的是,傳感器的坐標(biāo)系統(tǒng)與屏幕坐標(biāo)系統(tǒng)不同:傳感器坐標(biāo)系統(tǒng)的X軸沿屏幕向右,Y軸沿屏幕向上,Z軸則垂直于屏幕向外。圖11-1給出了傳感器的坐標(biāo)系統(tǒng)。圖11-1手機(jī)傳感器坐標(biāo)系統(tǒng)11.2.2重力傳感器重力傳感器的類型常量是Sensor.TYPE_GRAVITY。重力傳感器與加速度傳感器使用同一套坐標(biāo)系,它會返回一個(gè)三維向量,分別用于表示X、Y、Z軸的重力大小。AndroidSDK為表示地球重力,專門定義了一個(gè)如下所示的常量。PublicstaticfinalfloatGRAVITY_EARTH=9.80665f;可使用下述代碼獲得設(shè)備中的一個(gè)重力傳感器對象: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三個(gè)坐標(biāo)軸的旋轉(zhuǎn)速度。旋轉(zhuǎn)速度的單位是rad/s,旋轉(zhuǎn)速度為正值代表逆時(shí)針旋轉(zhuǎn),負(fù)值代表順時(shí)針旋轉(zhuǎn)。關(guān)于陀螺儀傳感器返回的三個(gè)角速度說明如下: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è)備外部地球磁場的強(qiáng)度。磁場傳感器會返回三個(gè)測量數(shù)據(jù),分別代表周圍磁場分解到X、Y、Z三個(gè)方向的磁場分量。通常情況下,這些數(shù)據(jù)并不會直接使用,而是和旋轉(zhuǎn)向量傳感器、加速度傳感器的數(shù)據(jù)一起用于計(jì)算設(shè)備的位置數(shù)據(jù)??墒褂孟率龃a獲得設(shè)備中的一個(gè)磁場傳感器對象: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è)備上的訪問傳感器都是軟件傳感器。方位傳感器可以返回三個(gè)角度,這三個(gè)角度即可確定手持設(shè)備的擺放狀態(tài)。關(guān)于方位傳感器返回的三個(gè)角度說明如下:Values[0]:表示手機(jī)頂部朝向與正北方的夾角。當(dāng)手機(jī)繞Z軸旋轉(zhuǎn)時(shí),該角度值會發(fā)生改變。例如,當(dāng)該角度為0時(shí),表面手機(jī)頂部朝向正北;當(dāng)該角度為90°時(shí),表面手機(jī)頂部朝向正東;當(dāng)該角度為180°時(shí),表面手機(jī)頂部朝向正南;當(dāng)該角度為270°時(shí),表面手機(jī)頂部朝向正西。Values[1]:表示傾斜度或手機(jī)翹起的程度。當(dāng)手機(jī)繞X軸傾斜時(shí),該角度值發(fā)生變化,該角度的取值范圍為-180°~180°。假設(shè)手機(jī)屏幕朝上水平放置在桌面上,如果桌面是完全水平的,該值應(yīng)該四0。假如從手機(jī)頂部開始抬起,直到將手機(jī)沿X軸旋轉(zhuǎn)180°,在這個(gè)旋轉(zhuǎn)過程中,該角度值會從0°變化到-180°。也就是說,從手機(jī)頂部抬起時(shí),該角度的值會逐漸減小,直到等于-180°,如果從手機(jī)底部開始抬起,直到將手機(jī)沿X軸旋轉(zhuǎn)180°,該角度值會從0°變化到180°。也就是說,從手機(jī)底部抬起時(shí),該角度的值會逐漸增大,直到等于180°。Values[2]:表示手機(jī)左側(cè)或右側(cè)翹起的角度。當(dāng)手機(jī)繞Y軸傾斜時(shí),該角度值發(fā)生變化。該角度的取值范圍時(shí)-90°~90°。假設(shè)將手機(jī)屏幕朝上水平放置在桌面上,如果桌面時(shí)完全水平的,該角度值應(yīng)為0°。假如將手機(jī)左側(cè)逐漸抬起,直到將手機(jī)沿Y軸旋轉(zhuǎn)90°,在這個(gè)旋轉(zhuǎn)過程中,該角度值會從0°變化到-90°。也就是說,從手機(jī)左側(cè)抬起時(shí),該角度的值會逐漸減少,直到-90°,如果從手機(jī)右側(cè)開始抬起,直到將手機(jī)沿Y軸旋轉(zhuǎn)90°,該角度的值會從0°變化到90°。也就是說,從手機(jī)右側(cè)抬起時(shí),該角度的值會逐漸增大,直到等于90°。11.3.3距離傳感器距離傳感器的類型常量是Sensor.TYPE_PROXIMITY。距離傳感器用于探測Android設(shè)備與其他物體的距離,例如手機(jī)與耳朵的距離。可使用下述代碼獲得設(shè)備中的一個(gè)方位傳感器對象:11.4.1Android環(huán)境傳感器開發(fā)目前,Android支持的環(huán)境傳感器主要有以下三種:(1)溫度傳感器(2)光線傳感器(3)壓力傳感器11.4.1溫度傳感器溫度傳感器的類型常量是Sensor.TEMPERATURE。溫度傳感器用于測量手持設(shè)備所處環(huán)境的強(qiáng)度。溫度傳感器會返回一個(gè)測量數(shù)據(jù),代表手持設(shè)備周圍的溫度,單位是攝氏度。

可使用下述代碼獲得設(shè)備中的一個(gè)溫度傳感器對象:privateSensorManagermSensorManager;privateSensormSensor;...mSensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);mSensor=mSensorManager.getDefaultSensor(Sensor.TEMPERATURE);11.4.2光線傳感器光線傳感器的類型常量是Sensor.LIGHT。光線傳感器用于測量手持設(shè)備所處環(huán)境的光照強(qiáng)度。光線傳感器會返回一個(gè)測量數(shù)據(jù),代表手持設(shè)備周圍的光強(qiáng),單位是勒克斯(lux)??墒褂孟率龃a獲得設(shè)備中的一個(gè)光線傳感器對象:privateSensorManagermSensorManager;privateSensormSensor;...mSensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);mSensor=mSensorManager.getDefaultSensor(Sensor.LIGHT);11.4.3壓力傳感器壓力傳感器的類型常量是Sensor.PRESSURE。壓力傳感器用于測量手持設(shè)備所處環(huán)境的壓力。壓力傳感器會返回一個(gè)測量數(shù)據(jù),代表手持設(shè)備周圍的壓力大小,單位是百帕斯卡(hPa)。11.5傳感器應(yīng)用開發(fā)綜合案例對傳感器的支持是Android系統(tǒng)的特征之一,通過使用傳感器可輕易開發(fā)出各種有趣的應(yīng)用。下面使用傳感器開發(fā)出一個(gè)指南針應(yīng)用。開發(fā)指南針的思路如下:先準(zhǔn)備一張指南針圖片,該圖片的上方向指針指向正北;然后,利用方向傳感器傳回來的第一個(gè)參數(shù)值是手機(jī)繞Z軸轉(zhuǎn)過的角度(即手機(jī)頂部與正北的夾角),通過在應(yīng)用程序中檢測該夾角并使指南針圖片反轉(zhuǎn)相應(yīng)角度,即可開發(fā)出指南針應(yīng)用程序。11.6小結(jié)本章主要介紹了Android傳感器應(yīng)用開發(fā)技術(shù),包括運(yùn)動傳感器應(yīng)用開發(fā)、位置傳感器應(yīng)用開發(fā)以及環(huán)境傳感器應(yīng)用開發(fā)技術(shù)。在學(xué)習(xí)上述內(nèi)容時(shí),應(yīng)重點(diǎn)掌握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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論