久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > Android傳感器開發

Android傳感器(qi)開發 時間(jian):2018-09-28      來源:未(wei)知(zhi)

隨著高科技的(de)(de)(de)發展,手機(ji)(ji)的(de)(de)(de)應用已經(jing)滲透(tou)到我(wo)們生活中的(de)(de)(de)各(ge)個方面,手機(ji)(ji)中的(de)(de)(de)各(ge)種(zhong)(zhong)應用比如:光線感應,跑步記錄儀,搖一搖,地(di)圖(tu)等各(ge)種(zhong)(zhong)軟(ruan)件的(de)(de)(de)開發其實都少不(bu)了一種(zhong)(zhong)開發就(jiu)是android 傳(chuan)感器的(de)(de)(de)開發。這(zhe)篇文章將帶領大家系統認識傳(chuan)感器的(de)(de)(de)工作原理(li)及開發。

一、Android傳感器(qi)原理(li)及(ji)簡介

傳感(gan)器(qi)是一(yi)(yi)種(zhong)物(wu)(wu)理裝(zhuang)置(zhi)或生物(wu)(wu)器(qi)官(guan),能(neng)夠探(tan)測(ce)、感(gan)受(shou)外界的(de)(de)信(xin)號、物(wu)(wu)理條件(jian)(如(ru)光、熱、濕度)或化學組(zu)成(cheng)(如(ru)煙(yan)霧),并將探(tan)知(zhi)的(de)(de)信(xin)息(xi)傳遞給其(qi)(qi)他(ta)裝(zhuang)置(zhi)或器(qi)官(guan)。標準(zhun)GB7665-1987對傳感(gan)器(qi)的(de)(de)定義是:“能(neng)感(gan)受(shou)規定的(de)(de)被(bei)測(ce)量并按照一(yi)(yi)定的(de)(de)規律轉換(huan)成(cheng)可用信(xin)號的(de)(de)器(qi)件(jian)或裝(zhuang)置(zhi),通常由敏感(gan)元(yuan)件(jian)和(he)(he)(he)轉換(huan)元(yuan)件(jian)組(zu)成(cheng)。”傳感(gan)器(qi)是一(yi)(yi)種(zhong)檢測(ce)裝(zhuang)置(zhi),能(neng)感(gan)受(shou)被(bei)測(ce)量的(de)(de)信(xin)息(xi),并能(neng)將檢測(ce)感(gan)受(shou)到的(de)(de)信(xin)息(xi),按一(yi)(yi)定規律轉換(huan)成(cheng)為電信(xin)號或其(qi)(qi)他(ta)所(suo)需形式的(de)(de)信(xin)息(xi)輸出,以滿足信(xin)息(xi)的(de)(de)傳輸、處理、存儲、顯示、記錄(lu)和(he)(he)(he)控制(zhi)等(deng)要求。它(ta)是實現自(zi)動檢測(ce)和(he)(he)(he)自(zi)動控制(zhi)的(de)(de)首(shou)要環節。

在android系統中,當手機(ji)內置傳(chuan)感器檢(jian)測到外界的(de)(de)環(huan)境變(bian)化后會引起相應的(de)(de)傳(chuan)感器模塊電阻發(fa)生變(bian)化進而影響(xiang)手機(ji)的(de)(de)部(bu)分(fen)電流和(he)電量。Google封裝提供了對這些硬件操作的(de)(de)API,因此,我(wo)們熟練(lian)的(de)(de)掌(zhang)握這些類和(he)方法就(jiu)可(ke)以進行(xing)傳(chuan)感器的(de)(de)開發(fa)了。

 Android系(xi)統所支(zhi)持的傳感(gan)器(qi)類型(xing)

Android感應器(qi)Android Sensor是一款能(neng)夠展示(shi)當前手機狀態的(de)應用,包括硬件(jian)信息(xi)、當前位置、加速計、陀螺儀、光感、磁場、定向、電池(chi)窗臺(tai),聲壓,同時還可(ke)以進行多(duo)點觸控(kong)的(de)測試。

大多數Android設備都會內置傳(chuan)感(gan)器,用(yong)來測量運動,旋轉(zhuan)和環境條件(jian)(重力,溫度,濕度等),這些傳(chuan)感(gan)器可以(yi)將采集到的(de)(de)(de)高(gao)精(jing)度的(de)(de)(de)數據上報給應用(yong)程序。們(men)(men)可以(yi)將傳(chuan)感(gan)器想成是應用(yong)程序的(de)(de)(de)外延(yan),幫助我們(men)(men)設計出更加豐富(fu)和多元化(hua)的(de)(de)(de)應用(yong)。Android 系統所支持的(de)(de)(de)傳(chuan)感(gan)器類型:

傳(chuan)感器類型表

傳(chuan)感器類型(xing) 對應(ying)值 傳(chuan)感器名稱

TYPE_ACCELEROMETER 1 加速(su)度

TYPE_MAGNETIC_FIELD 2 磁(ci)力(li)

TYPE_ORIENTATION 3 方向

TYPE_GYROSCOPE 4 陀螺儀

TYPE_LIGHT 5 光線感(gan)應

TYPE_PRESSURE 6 壓力

TYPE_TEMPERATURE 7 溫(wen)度

TYPE_PROXIMITY 8 接(jie)近

TYPE_GRAVITY 9 重力

TYPE_GRAVITY 10 線性加速度

 傳感器坐標(biao)系統(tong)

通常(chang)情(qing)況,傳感器框架使用(yong)標(biao)準的3軸(zhou)坐標(biao)系(xi)統(tong)來表達(da)數據值(zhi)。對(dui)于大(da)多數傳感器,坐標(biao)系(xi)統(tong)是(shi)相對(dui)與設備(bei)(bei)(bei)被保持在(zai)默認(ren)方(fang)向(xiang)時(shi)的設備(bei)(bei)(bei)的屏幕來定(ding)義的。當(dang)設備(bei)(bei)(bei)被保持在(zai)默認(ren)方(fang)向(xiang)時(shi),X軸(zhou)是(shi)水平向(xiang)右、Y軸(zhou)是(shi)垂直向(xiang)上、Z軸(zhou)是(shi)指向(xiang)屏幕面板的外部。在(zai)這個系(xi)統(tong)中,背(bei)對(dui)著屏幕的Z軸(zhou)坐標(biao)是(shi)負值(zhi)。該坐標(biao)系(xi)統(tong)被加速度傳感器、重力傳感器、陀螺儀、線(xian)性加速度傳感器、磁力儀傳感器使用(yong)

要(yao)理解的(de)重要(yao)的(de)一點是,在設備屏幕(mu)的(de)方向發(fa)(fa)生變(bian)化(hua)時,坐(zuo)標(biao)系統的(de)各坐(zuo)標(biao)軸不會發(fa)(fa)生變(bian)化(hua),也就(jiu)是說(shuo)傳感器的(de)坐(zuo)標(biao)系統不會因設備的(de)移動而(er)改變(bian)。這種行為(wei)與(yu)OpenGL坐(zuo)標(biao)系統的(de)行為(wei)相同。

另(ling)外(wai)要理解的(de)一點(dian)是(shi)(shi)(shi),應用程序不(bu)要假設設備(bei)(bei)的(de)自(zi)然(默認)方向(xiang)是(shi)(shi)(shi)縱向(xiang)的(de)。對于很多平板設備(bei)(bei)的(de)自(zi)然方向(xiang)是(shi)(shi)(shi)橫向(xiang)的(de)。傳感(gan)器坐(zuo)標系統總基于設備(bei)(bei)的(de)自(zi)然方向(xiang)。

 Android傳感(gan)器常用類和接口:

傳(chuan)感(gan)器(qi)屬于(yu)Android應用(yong)的(de)(de)(de)外延,Android應用(yong)不(bu)能直接(jie)對(dui)(dui)傳(chuan)感(gan)器(qi)進(jin)行(xing)操(cao)(cao)作,Android對(dui)(dui)硬件的(de)(de)(de)操(cao)(cao)作進(jin)行(xing)了封(feng)裝,提供給我們(men)一(yi)些類和接(jie)口,我們(men)通過類和接(jie)口來調用(yong)方法可以(yi)獲(huo)取傳(chuan)感(gan)器(qi)上報(bao)的(de)(de)(de)數據。Android傳(chuan)感(gan)器(qi)開發中常用(yong)的(de)(de)(de)類和接(jie)口有(you)SensorManager、SensorEventListener、Sensor、SensorEvent。顧名思義,SensorManager就是所有(you)傳(chuan)感(gan)器(qi)的(de)(de)(de)一(yi)個(ge)綜合管理類,包(bao)括了傳(chuan)感(gan)器(qi)的(de)(de)(de)種類、采(cai)樣率、精準度等。可以(yi)通過getSystemService方法來獲(huo)取一(yi)個(ge)SensorManager對(dui)(dui)象。類和接(jie)口的(de)(de)(de)作用(yong)如下:

Android傳感器類和(he)接口

類或接口 作用(yong)

 SensorManager 1. 獲取手(shou)機內置傳(chuan)感(gan)器(qi)列表

2. 注(zhu)冊(ce)指定傳感器(qi)監聽器(qi)

3. 注(zhu)銷監聽器

Sensor 1. 用來表(biao)示一個傳感器的類(lei)

2. 設置傳感器的能力

SensorEvent 1. 用來封裝傳(chuan)感器上報數據的類

 SensorEventListener 1. 用來監(jian)聽傳感器(qi)上(shang)報數據的監(jian)聽器(qi)接口

 Android傳感器的功能

要(yao)(yao)在Android中使用(yong)傳(chuan)感器,首(shou)先(xian)要(yao)(yao)了解SensorManager和SensorEventListener。顧名思義,SensorManager就(jiu)是所有傳(chuan)感器的一(yi)個(ge)(ge)綜合管理類(lei),包括了傳(chuan)感器的種類(lei)、采樣率、精準(zhun)度(du)等。可以通過getSystemService方(fang)法來獲取一(yi)個(ge)(ge)SensorManager對(dui)象。

代碼(ma)清單(dan)1 獲取SensorManager對象

mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

取(qu)(qu)得SensorManager對象之(zhi)后(hou),可(ke)以通(tong)過getSensorList方法來獲取(qu)(qu)我(wo)們(men)所需的傳(chuan)感器類型(xing),保存到一個傳(chuan)感器列表(biao)中(zhong)。

代碼清(qing)單2 getSensorList

List sensors =

mSensorManager.getSensorList(Sensor.TYPE_ALL);

SensorManager還有很多的常(chang)量以及一些常(chang)用的方法。

SensorManager常用方法

方法 說明

getDefaultSensor 得到默(mo)認(ren)的傳感器(qi)對象

getInclination 得到(dao)地磁傳(chuan)感器傾斜(xie)角的弧度

getOrientation 得到設備(bei)的旋轉(zhuan)方向

getSensorList 得到指定傳感器的列表

要與傳感器進行交互,應用程序必須注冊以偵聽與一個或多個傳感器相關的活動。Android中提供了registerListener來注冊一個傳感器,并提供了unregisterListener來卸載一個傳感器。registerListener方法包括三個參數:第一個參數是接收信號的Listener實例;第二個參數是想接收的傳感器類型的列表(上一步創建的List對象);第三個參數為接收頻度。調用后返回一個boolean型的值,true表示成功,false表示失敗。不再使用以后需進行卸載。

代(dai)碼清單3 注冊和卸載傳感器

//注冊傳感(gan)器

Boolean mRegisteredSensor = mSensorManager.registerListener (this, sensor, SensorManager.SENSOR_DELAY_FASTEST);

//卸載(zai)傳感器

mSensorManager.unregisterListener(this);

其(qi)中,SensorEventListener是使用(yong)(yong)(yong)傳(chuan)感器(qi)的(de)核心部分,包括以下兩個(ge)必須實(shi)現(xian)的(de)方(fang)法:  onSensorChanged(SensorEvent event)方(fang)法在傳(chuan)感器(qi)值(zhi)更改時調(diao)用(yong)(yong)(yong)。該(gai)方(fang)法只有受(shou)此應用(yong)(yong)(yong)程序監視的(de)傳(chuan)感器(qi)調(diao)用(yong)(yong)(yong)。參數包括一(yi)(yi)個(ge)SensorEvent對象。該(gai)對象包括一(yi)(yi)組(zu)浮點數,表示傳(chuan)感器(qi)獲(huo)得的(de)方(fang)向(xiang)、加速度等信息。代碼清單4所示的(de)代碼可以取(qu)得其(qi)值(zhi)。

代碼清單4 獲取(qu)傳感器(qi)獲取(qu)信(xin)息(xi)

float x = event.values[SensorManager.DATA_X];

float y = event.values[SensorManager.DATA_Y];

float z = event.values[SensorManager.DATA_Z];

 onAccuracyChanged(Sensor sensor,int accuracy)方(fang)法在傳(chuan)(chuan)感器(qi)的精準(zhun)度發生改(gai)變時調用。參數(shu)包(bao)括兩個整數(shu):一個表示傳(chuan)(chuan)感器(qi),另一個表示該(gai)傳(chuan)(chuan)感器(qi)新的準(zhun)確值。

二、常用(yong)傳感器

1. 方(fang)向傳感器

一般情況下,在Android系統(tong)中(zhong)對(dui)應的(de)字段常量是TYPE_ORIENTATION,得到(dao)方向(xiang)傳(chuan)感器在方向(xiang)傳(chuan)感器中(zhong)values變量的(de)3個值都表示度數(shu),他們的(de)含(han)義如下:

values[0]:該值(zhi)(zhi)表(biao)(biao)(biao)示方位(wei),也(ye)就是(shi)手(shou)(shou)機繞著Z軸旋轉的(de)(de)角度。0表(biao)(biao)(biao)示北(North);90表(biao)(biao)(biao)示東(East);180表(biao)(biao)(biao)示南(South);270表(biao)(biao)(biao)示西(West)。如果values[0]的(de)(de)值(zhi)(zhi)正好是(shi)這4個值(zhi)(zhi),并且手(shou)(shou)機是(shi)水平放置,表(biao)(biao)(biao)示手(shou)(shou)機的(de)(de)正前(qian)方就是(shi)這4個方向。電子羅盤就是(shi)利用這個特性來實現的(de)(de)。

values[1]:該(gai)值(zhi)表(biao)示傾斜度,或手機(ji)翹起的(de)程度。當手機(ji)繞著X軸(zhou)傾斜時(shi)(shi)該(gai)值(zhi)發生(sheng)變化。values[1]的(de)取值(zhi)范圍是(shi)-180≤values[1]≤180。假設將手機(ji)屏(ping)幕朝上(shang)水平(ping)放在桌子上(shang),這時(shi)(shi)如果桌子是(shi)完全水平(ping)的(de),values[1]的(de)值(zhi)應該(gai)是(shi)0(由于很少有桌子是(shi)絕對水平(ping)的(de),因此,該(gai)值(zhi)很可能不為0,但(dan)一般都是(shi)-5和5之間的(de)某個值(zhi))。

values[2]:表(biao)示手(shou)機(ji)沿著Y軸的(de)(de)滾(gun)動角度。取值(zhi)范圍是(shi)-90≤values[2]≤90。假設將(jiang)手(shou)機(ji)屏(ping)幕朝上水平(ping)放(fang)在(zai)桌(zhuo)(zhuo)面(mian)(mian)(mian)上,這(zhe)(zhe)時(shi)(shi)(shi)如果桌(zhuo)(zhuo)面(mian)(mian)(mian)是(shi)平(ping)的(de)(de),values[2]的(de)(de)值(zhi)應(ying)為(wei)0。將(jiang)手(shou)機(ji)左側(ce)逐(zhu)(zhu)漸抬起時(shi)(shi)(shi),values[2]的(de)(de)值(zhi)逐(zhu)(zhu)漸變小,直到手(shou)機(ji)垂直于(yu)桌(zhuo)(zhuo)面(mian)(mian)(mian)放(fang)置,這(zhe)(zhe)時(shi)(shi)(shi)values[2]的(de)(de)值(zhi)是(shi)-90。將(jiang)手(shou)機(ji)右側(ce)逐(zhu)(zhu)漸抬起時(shi)(shi)(shi),values[2]的(de)(de)值(zhi)逐(zhu)(zhu)漸增大,直到手(shou)機(ji)垂直于(yu)桌(zhuo)(zhuo)面(mian)(mian)(mian)放(fang)置,這(zhe)(zhe)時(shi)(shi)(shi)values[2]的(de)(de)值(zhi)是(shi)90。在(zai)垂直位置時(shi)(shi)(shi)繼續(xu)向(xiang)右或(huo)向(xiang)左滾(gun)動,values[2]的(de)(de)值(zhi)會(hui)繼續(xu)在(zai)-90至90之間(jian)變化。

2. 磁(ci)力傳感器

磁(ci)(ci)力傳(chuan)(chuan)(chuan)感器簡稱為M-sensor,在(zai)Android 中對應的(de)(de)字段常量是(shi)(shi)(shi)TYPE_MAGNETIC_FIELD,該傳(chuan)(chuan)(chuan)感器主要(yao)讀取的(de)(de)是(shi)(shi)(shi)磁(ci)(ci)場的(de)(de)變化,通過該傳(chuan)(chuan)(chuan)感器便可開發出指南針、羅盤等磁(ci)(ci)場應用。返回x、y、z三軸的(de)(de)環境磁(ci)(ci)場數(shu)(shu)據。該數(shu)(shu)值的(de)(de)單位(wei)是(shi)(shi)(shi)微(wei)特(te)斯(si)拉(micro-Tesla),用uT表(biao)示,單位(wei)也可以是(shi)(shi)(shi)高斯(si)(Gauss)。

values[1]:該值表示x方向(xiang)的磁場分量(liang)

values[2]: 該值表(biao)示y方向的(de)磁場分量

values[3]: 該值表示z方向的磁場分量

3. 溫度傳(chuan)感器

溫(wen)度(du)(du)傳(chuan)感器返(fan)回當前(qian)的(de)溫(wen)度(du)(du),在Android 中對應的(de)字(zi)段常量是TYPE_TEMPERATURE。此傳(chuan)感器返(fan)回值(zhi)只有(you)一個值(zhi)表(biao)示當前(qian)溫(wen)度(du)(du),單位是攝氏度(du)(du)。

values[0]:當前溫度(du)

4. 加速度傳感(gan)器

加(jia)(jia)速(su)度傳(chuan)感器用來測量加(jia)(jia)速(su)度,在(zai)(zai)Android 中對應的(de)字段常(chang)量是TYPE_ACCELEROMETER,在(zai)(zai)該傳(chuan)感器上獲取的(de)values變(bian)量的(de)3個元素值分別表(biao)示(shi)X、Y、Z軸的(de)加(jia)(jia)速(su)值。例如,水平(ping)放在(zai)(zai)桌面(mian)上的(de)手(shou)機從左側向右側移(yi)動,values[0]為負值;從右向左移(yi)動,values[0]為正值。讀者可(ke)以(yi)通過本(ben)節的(de)例子(zi)來體會加(jia)(jia)速(su)傳(chuan)感器中的(de)值的(de)變(bian)化。

values[1]:該值表示x方(fang)向的(de)加速度分量

values[2]: 該(gai)值表示y方向(xiang)的加速度(du)分量

values[3]: 該值表示z方向的(de)加速度分(fen)量(liang)

5. 光(guang)傳感器

光線傳感(gan)器用(yong)來測量(liang)當(dang)前環境的(de)(de)光線,在Android 中對應的(de)(de)字段(duan)常(chang)(chang)量(liang)是TYPE_LIGHT。values數組(zu)只有第一個(ge)元(yuan)素(su)(values[0])有意(yi)義。表(biao)示(shi)光線的(de)(de)強度(du)。大的(de)(de)值是120000.0f。Android SDK將光線強度(du)分為不同的(de)(de)等級(ji)(ji),每一個(ge)等級(ji)(ji)的(de)(de)大值由一個(ge)常(chang)(chang)量(liang)表(biao)示(shi),這些常(chang)(chang)量(liang)都(dou)定義在SensorManager類中,代碼如代碼清單5所(suo)示(shi):

代碼清單5 光線強度等級

public static final float LIGHT_SUNLIGHT_MAX =120000.0f;

public static final float LIGHT_SUNLIGHT=110000.0f;

public static final float LIGHT_SHADE=20000.0f;

public static final float LIGHT_OVERCAST= 10000.0f;

public static final float LIGHT_SUNRISE= 400.0f;

 public static final float LIGHT_CLOUDY= 100.0f;

public static final float LIGHT_FULLMOON= 0.25f;

public static final float LIGHT_NO_MOON= 0.001f;

上面的八個常(chang)量只是臨界值(zhi)。讀者(zhe)在實(shi)際使(shi)用光線(xian)傳(chuan)感器時要根據實(shi)際情況確定(ding)一個范(fan)圍。例如,當太陽逐(zhu)漸(jian)升起時,values[0]的值(zhi)很可(ke)能(neng)會(hui)(hui)超過(guo)LIGHT_SUNRISE,當values[0]的值(zhi)逐(zhu)漸(jian)增大(da)時,就會(hui)(hui)逐(zhu)漸(jian)越過(guo)LIGHT_OVERCAST,而達(da)到(dao)LIGHT_SHADE,當然,如果天特(te)別好的話,也可(ke)能(neng)會(hui)(hui)達(da)到(dao)LIGHT_SUNLIGHT,甚至更(geng)高。

三、傳(chuan)感器開發步驟

所有(you)的(de)程序開發(fa)都有(you)一定的(de)邏(luo)輯和步(bu)驟,傳(chuan)感(gan)(gan)器(qi)的(de)開發(fa)也(ye)不(bu)例外,傳(chuan)感(gan)(gan)器(qi)開發(fa)共有(you)3個步(bu)驟,下(xia)面以加速(su)度傳(chuan)感(gan)(gan)器(qi)為(wei)例來演示傳(chuan)感(gan)(gan)器(qi)開發(fa)的(de)三個具(ju)體步(bu)驟:

 1.獲取傳(chuan)(chuan)感(gan)器管(guan)理(li)器對象、傳(chuan)(chuan)感(gan)器對象,具(ju)體代碼如代碼清單6

代碼(ma)清單6 獲取傳感(gan)器(qi)管理器(qi)和傳感(gan)器(qi)對象

//獲取(qu)傳感器管理(li)器 SensorManager

SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

//獲取加速度傳(chuan)感(gan)器 Sensor

Sensor accelerometerSensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

 2.定(ding)義傳感器事件,獲(huo)取(qu)響應數(shu)據,具體(ti)代碼(ma)如代碼(ma)清(qing)單(dan)7

代碼清單7 定義(yi)傳(chuan)感器事件(jian)獲取上報數據

//定義傳感(gan)器事件監聽器

SensorEventListener accelerometerListener = new SensorEventListener() {

//當Sensor上報的(de)數(shu)據發生改變時,onSensorChanged被調用

public void onSensorChanged(SensorEvent event) {

//上報的(de)數(shu)據會(hui)保存在values屬性中

float x = event.values[SennsorManager.DATA_X]

float y = event.values[SennsorManager.DATA_Y]

float z = event.values[SennsorManager.DATA_Z]

//x,y,z變(bian)量是從加速度(du)傳感(gan)器獲取的數(shu)據(ju)

}

//當Sensor精度(du)被(bei)改變時,onAccuracyChanged被(bei)調用

public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

}, mSensor, SensorManager.SENSOR_DELAY_NORMAL, null);

 3.注冊(應(ying)用)傳感器事件,具體代碼如代碼清(qing)單(dan)8

代碼清單(dan)8 定義傳感器事件獲取上(shang)報數(shu)據(ju)

//在傳感器管理器中(zhong)注冊監聽器

mSensorManager.registerListener(accelerometerListener, accelerometerSensor,SensorManager.SENSOR_DELAY_NORMAL);

四、開發案例

下面我們(men)將通過兩個開(kai)發案例來練習傳感器的開(kai)發使用

 案例一、光(guang)傳感器(qi)的應用

需求:在手機屏(ping)幕(mu)上實時顯示當前環境的(de)光線(xian)的(de)強弱值

布局文(wen)件(jian)里(li)只有一個TextView,非常簡(jian)單,這里(li)就不再粘(zhan)貼(tie)代(dai)碼,java代(dai)碼具體實現代(dai)碼

如(ru)下代碼清(qing)單9所示:

代碼(ma)清單9 定義(yi)傳感器事件獲取上報數據(ju)

public class MainActivity extends Activity {

TextView textview;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

textview = (TextView) findViewById(R.id.textview);

/**

* 需(xu)求(qiu):獲取特定傳感器上的上報數(shu)據

* 1.獲取特定的傳感器(qi)

* 2.給傳感器(qi)設置監聽

* 3.獲取上(shang)報(bao)數據

* */

//獲取(qu)特定的傳(chuan)感器(qi):通過管理器(qi)找到特定的傳(chuan)感器(qi)

SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);

//獲取光傳感器

Sensor lightSensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT);

//給傳(chuan)感器(qi)注冊(ce)監(jian)聽器(qi)

/**

* 第(di)一個參(can)數:傳感(gan)器的監(jian)聽器

* 第(di)二個(ge)參數:給哪個(ge)傳感器設(she)置監聽

* 第三個參數:采樣(yang)率,即多(duo)久進行(xing)一次采樣(yang)

* */

sm.registerListener(new MyListener(), lightSensor, SensorManager.SENSOR_DELAY_NORMAL);

}

/**

* 傳(chuan)感器(qi)的(de)監聽器(qi),可以監聽傳(chuan)感器(qi)的(de)數據變化(hua),上報數據

* */

 class MyListener implements SensorEventListener{

/**

* 傳感器上報數據發生變化時調用的方(fang)法

* */

@Override

public void onSensorChanged(SensorEvent event) {

//獲取(qu)上(shang)報數據的數組,在光線(xian)傳(chuan)感(gan)器(qi)中只有一個values[0],代表了當前光線(xian)強(qiang)度

float[] values = event.values;

textview.setText("當前(qian)光線為:"+values[0]);

}

/**

* 傳感器精度發生(sheng)變化(hua)時調用的方法(fa)

* */

@Override

public void onAccuracyChanged(Sensor sensor, int accuracy) {

// TODO Auto-generated method stub

}

}

}

這里只是(shi)舉例(li)一(yi)個非常簡單的利用光傳感(gan)器的案例(li),讀者有興(xing)趣還可(ke)以(yi)實現通過加速度(du)傳感(gan)器實現搖一(yi)搖的功(gong)能。

上一篇:學習Linux一點心得

下一篇:實現一鍵退出所有的activity

熱點文章(zhang)推(tui)薦
華清學員就(jiu)業榜單
高薪學(xue)員經驗分享
熱點新(xin)聞推薦
前(qian)臺專線:010-82525158 企業(ye)培訓洽談專線:010-82525379 院(yuan)校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部