蘇 燕,梁 武
(北海職業(yè)學(xué)院電子信息工程系,廣西 北海 536000)
作為首個(gè)真正完全開(kāi)發(fā)的手機(jī)移動(dòng)平臺(tái),Android以其開(kāi)源性及強(qiáng)勁的功能被稱為目前世界上最為流行的手機(jī)操作系統(tǒng)之一。 Android 系統(tǒng)最初由安迪魯賓等人開(kāi)發(fā)研制,最初的目的是為數(shù)碼照相機(jī)提供一個(gè)先進(jìn)時(shí)尚的操作系統(tǒng),經(jīng)過(guò)發(fā)展后發(fā)現(xiàn)市場(chǎng)需求根本不大,然而智能手機(jī)市場(chǎng)又剛好適應(yīng)社會(huì)需求快速成長(zhǎng),于是Android 系統(tǒng)被他們改造成一款專門適合智能手機(jī)的操作系統(tǒng)。 Android 一詞英文本意為“人形機(jī)器人”。 2007 年11 月5 日,Google 公司正式對(duì)外宣布,并展示了基于Linux 內(nèi)核系統(tǒng)的開(kāi)放源代碼移動(dòng)設(shè)備操作系統(tǒng)并宣布將其命名為Android。 自此Android 便以最具開(kāi)放性的手機(jī)開(kāi)發(fā)系統(tǒng)在操作系統(tǒng)中嶄露頭角。為了更好地開(kāi)發(fā)與推廣Android 手機(jī)操作系統(tǒng),2007 年11 月,Google 公司與34 家手機(jī)企業(yè)攜手建立了開(kāi)發(fā)手機(jī)聯(lián)盟。 隨著Android 操作系統(tǒng)的不斷完善和快速發(fā)展,Android 操作系統(tǒng)慢慢逐漸替代并拓展到平板電腦及其他領(lǐng)域[1-3]。
(1)可自由隨時(shí)在無(wú)線網(wǎng)絡(luò)間切換,大大地節(jié)省上網(wǎng)費(fèi)用。
(2)系統(tǒng)操作界面更加簡(jiǎn)單方便,操作也更加便利。
(3)網(wǎng)絡(luò)鏈接簡(jiǎn)單快速,是移動(dòng)終端的最佳搭檔。
(4)支持多項(xiàng)任務(wù)同時(shí)進(jìn)行,任務(wù)之間切換簡(jiǎn)單。
(5)與微軟的Exchange 可以同步,使工作娛樂(lè)可同時(shí)進(jìn)行。
(6)系統(tǒng)發(fā)展前景更加廣闊,軟件卸載安裝更便捷。
(7)Linux 內(nèi)核非常強(qiáng)大,幾乎不死機(jī)。
由于Android 系統(tǒng)需要支持Java 代碼的運(yùn)行,最底層 LinuxKernel (Linux 內(nèi)核)的所有程序幾乎都是用C語(yǔ)言來(lái)編寫的,因此最底層是整個(gè)系統(tǒng)的核心支持庫(kù)。HAL 層,硬件抽象層,Android 體系結(jié)構(gòu)沒(méi)有HAL 層、硬件抽象層。 個(gè)性定制無(wú)法改變其源碼。 幾乎都是驅(qū)動(dòng)代碼封裝起來(lái)。 Lib 庫(kù)層,為了方便程序員的學(xué)習(xí),封裝起來(lái)的一個(gè)層,這樣就更加簡(jiǎn)單方便了,全部都是C 語(yǔ)言編寫的封裝方法,不需要操作底層。 應(yīng)用框架層與應(yīng)用層都是用Java 代碼寫,在編寫過(guò)程中為了讓程序員方便用Java 直接調(diào)用C 語(yǔ)言,封裝了新的層,通過(guò)這樣的方式直接用Java 調(diào)用方法就可以了。
Android 系統(tǒng)中,每個(gè)Android 應(yīng)用都將運(yùn)行在自己的Linux 進(jìn)程當(dāng)中。 當(dāng)一個(gè)程序或其某些部分被請(qǐng)求時(shí),它的進(jìn)程就被創(chuàng)建了;當(dāng)這個(gè)程序沒(méi)有必要再進(jìn)行下去且系統(tǒng)需要回收這個(gè)進(jìn)程的內(nèi)存用于其他程序時(shí),這個(gè)進(jìn)程就“死亡”了。 Android 系統(tǒng)主動(dòng)管理資源,為了保證高優(yōu)級(jí)程序正常運(yùn)行或者為了減輕系統(tǒng)內(nèi)存負(fù)載,Android 系統(tǒng)會(huì)主動(dòng)終止低優(yōu)先級(jí)的程序,因此程序的生命周期是由Android 系統(tǒng)獨(dú)立控制的。Android 系統(tǒng)中的進(jìn)程優(yōu)先級(jí),如圖1 所示,由優(yōu)先級(jí)從低級(jí)到高級(jí)的順序進(jìn)行[3]。
圖1 進(jìn)程優(yōu)先級(jí)
Android 系統(tǒng)是一個(gè)面向應(yīng)用程序開(kāi)發(fā)的平臺(tái),它擁有具有吸引力的用戶界面元素、數(shù)據(jù)管理和網(wǎng)絡(luò)應(yīng)用等優(yōu)秀的功能。 Android 還提供了許多頗具特殊的接口,如傳感器。 傳感器是讓Android 設(shè)備區(qū)別于其他計(jì)算機(jī)的重要功能。 如果沒(méi)有傳感器,Android 設(shè)備只是一個(gè)動(dòng)力不足、屏幕太小的Web 瀏覽器,同時(shí)其輸入機(jī)制也很笨拙。 只要手機(jī)設(shè)備自帶的硬件可以提供這些監(jiān)控傳感器,Android 系統(tǒng)應(yīng)用就可以從外界條件通過(guò)傳感器來(lái)獲取,其中包括手機(jī)設(shè)備的運(yùn)行狀態(tài)、溫度和壓力、目前的擺放方向、外界的磁場(chǎng)等。 該系統(tǒng)可以保障提供驅(qū)動(dòng)程序去管理這些傳感器,然而當(dāng)這些傳感器迅速感到外部環(huán)境發(fā)送改變時(shí),這些傳感器數(shù)據(jù)由Android 系統(tǒng)負(fù)責(zé)管理[4-6]。
視頻監(jiān)控實(shí)現(xiàn)應(yīng)用開(kāi)發(fā)的必備條件就是對(duì)傳感器的靈活運(yùn)用,傳感器不僅僅是一種檢測(cè)裝置,同時(shí)也能檢測(cè)到被測(cè)量的信息,并能將被檢測(cè)到的信息,通過(guò)一定的規(guī)律轉(zhuǎn)換成其他所需形式或電信號(hào)的信息輸出,以此來(lái)滿足達(dá)到所需信息的傳輸、處理、存儲(chǔ)、顯示、記錄和控制等要求,它也是實(shí)現(xiàn)自動(dòng)控制以及自動(dòng)檢測(cè)的首要環(huán)節(jié)。 Android 系統(tǒng)中內(nèi)置了很多類型的傳感器,這些傳感器被封裝在Sensor 類中。 Sensor 類是管理各種傳感器共同屬性(名字、供應(yīng)商、類型、版本)的類。SensorManager 類就是全部傳感器的一個(gè)綜合管理類,也同樣包括傳感器的種分類、采樣率、精確度等,是Android 為應(yīng)用提供傳感器硬件訪問(wèn)能力的系統(tǒng)服務(wù)。和其他系統(tǒng)服務(wù)一樣,它允許用戶注冊(cè)或注銷傳感器相關(guān)事件。 一旦注冊(cè)成功,應(yīng)用將會(huì)接收到從硬件傳來(lái)的傳感器數(shù)據(jù)。
Android 中的傳感器大致可以分為六大類。
光線傳感器主要是用來(lái)檢測(cè)手機(jī)周圍光的強(qiáng)度,位于一個(gè)小的黑色玻璃開(kāi)口下面。 它只是一個(gè)光敏二極管,工作方式和LED 的物理原理相同,但是發(fā)光條件卻正好相反。 不是在施加電壓時(shí)發(fā)光,而是在光入射時(shí)產(chǎn)生電壓。 與其他傳感器區(qū)別之處就是,該傳感器只能讀取一個(gè)數(shù)值,也就是手機(jī)周圍光的強(qiáng)度,單位為勒克斯(LX)。
接近傳感器包含一個(gè)在光電探測(cè)器邊上的弱紅外LED。 當(dāng)有物體離傳感器足夠近時(shí),光敏傳感器會(huì)檢測(cè)到反射的紅外光。 接近傳感器分為兩類:一類是用來(lái)檢測(cè)物體與手機(jī)的距離,單位是CM,另一類則是現(xiàn)在大多數(shù)智能手機(jī)中的接近傳感器用法——測(cè)量物體是否在一個(gè)閾值距離內(nèi),其有價(jià)值的閾值距離一般為2~4 CM。 其中一些接近傳感器往往只能返回遠(yuǎn)和近兩種狀態(tài)。 接近傳感器可以將最大距離返回狀態(tài),而小于最大距離就是返回近狀態(tài)。 接近傳感器可用于在接聽(tīng)電話時(shí)自動(dòng)關(guān)閉LCD 屏幕以達(dá)到節(jié)省電量的目的。 而另外一些芯片集成了接近傳感器和光線傳感器的共同功能。
環(huán)境溫度傳感器提供室內(nèi)溫度,這種傳感器是為了取代已逐步淘汰的用于檢測(cè)CPU 溫度。 環(huán)境溫度傳感器感應(yīng)后會(huì)返回一個(gè)數(shù)據(jù),收到的該數(shù)據(jù)表明了手機(jī)設(shè)備周圍的溫度。
方向傳感器主要用來(lái)感應(yīng)手機(jī)設(shè)備的狀態(tài)擺放,并且方向傳感器可以返回3 個(gè)角度,而這3 個(gè)角度就可確定手機(jī)的擺放狀態(tài),分別為:方向角、傾斜角以及旋轉(zhuǎn)角。
加速度傳感器或許是目前為止最成熟的一種微機(jī)電傳感器,現(xiàn)如今市面上看到的加速度傳感器種類繁多。 而我們的手機(jī)中常用的加速度傳感器有BOSCH的BMA 系列、AMK 系列、ST 系列。
磁場(chǎng)傳感器主要工作用來(lái)獲取手機(jī)設(shè)備外部的磁場(chǎng)強(qiáng)硬度。 哪怕周圍沒(méi)有任何的直接磁場(chǎng)感應(yīng),手機(jī)設(shè)備也都會(huì)始終處于地球磁場(chǎng)中。
視頻的開(kāi)始和停止是由晃動(dòng)手機(jī)來(lái)實(shí)現(xiàn)的,其主要思路是:當(dāng)手機(jī)晃動(dòng)時(shí),加速度的變化幅度超過(guò)設(shè)定界定,視為決定播放和停止。 與獲取傳感器值類似,首先通過(guò)gessystemService 方法得到SensorManager 對(duì)象,然后通過(guò)RegisterListener 方法來(lái)對(duì)其進(jìn)行注冊(cè),并在onSensorChanged()方法中設(shè)置監(jiān)聽(tīng)器以實(shí)現(xiàn)該功能,最后注銷傳感器。 視頻監(jiān)控系統(tǒng)實(shí)現(xiàn)代碼如下:
遠(yuǎn)程視頻監(jiān)控已經(jīng)成為社會(huì)發(fā)展的潮流,基于Android 系統(tǒng)的遠(yuǎn)程視頻監(jiān)控更是極其方便用戶隨時(shí)隨地查看,保障安全性和及時(shí)性,Android 系統(tǒng)的遠(yuǎn)程視頻監(jiān)控作為一項(xiàng)新流行的科學(xué)技術(shù),雖然目前還在不斷研究和探索中,但隨著社會(huì)的不斷發(fā)展,設(shè)備及系統(tǒng)的不斷完善,計(jì)算機(jī)網(wǎng)絡(luò)的飛快進(jìn)步,Android 系統(tǒng)的遠(yuǎn)程視頻監(jiān)控將會(huì)運(yùn)用到各個(gè)領(lǐng)域。