《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Android的智能家居終端設(shè)計(jì)與實(shí)現(xiàn)
基于Android的智能家居終端設(shè)計(jì)與實(shí)現(xiàn)
來(lái)源:微型機(jī)與應(yīng)用2012年第14期
周時(shí)偉1,2, 謝維波1,2
(1. 華僑大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,福建 廈門(mén)361021; 2. 華僑大學(xué) 廈門(mén)軟件園嵌入式技
摘要: 在深入分析Android的系統(tǒng)架構(gòu)及其應(yīng)用程序組成的基礎(chǔ)上,設(shè)計(jì)和實(shí)現(xiàn)了一款基于Android的智能家居終端。終端主要包括主控制模塊、信號(hào)處理模塊、網(wǎng)絡(luò)管理模塊、媒體流管理模塊及信息存取模塊等功能模塊。較好地融合了Android與智能家居終端,具有較強(qiáng)的實(shí)用價(jià)值和開(kāi)發(fā)指導(dǎo)意義。
Abstract:
Key words :

摘   要:  在深入分析Android的系統(tǒng)架構(gòu)及其應(yīng)用程序組成的基礎(chǔ)上,設(shè)計(jì)和實(shí)現(xiàn)了一款基于Android的智能家居終端。終端主要包括主控制模塊、信號(hào)處理模塊、網(wǎng)絡(luò)管理模塊、媒體流管理模塊及信息存取模塊等功能模塊。較好地融合了Android與智能家居終端,具有較強(qiáng)的實(shí)用價(jià)值和開(kāi)發(fā)指導(dǎo)意義。
關(guān)鍵詞: 智能家居;Android系統(tǒng);家居安防;可視對(duì)講;智能終端

    自2007年Google推出開(kāi)源手機(jī)操作系統(tǒng)Android以來(lái),Android的應(yīng)用開(kāi)發(fā)一時(shí)間風(fēng)靡全球,各高科技領(lǐng)域應(yīng)用都在向Android進(jìn)軍。Android的盛行取決于其獨(dú)特的優(yōu)勢(shì)。首先,Android是一款基于Linux內(nèi)核的開(kāi)源系統(tǒng),它具有操作系統(tǒng)、中間件和關(guān)鍵應(yīng)用程序。對(duì)第三方應(yīng)用開(kāi)發(fā)完全開(kāi)放、人員具有較大的自由度[1]。其次,Android應(yīng)用程序的開(kāi)發(fā)采用Java語(yǔ)言,通過(guò)應(yīng)用框架層提供的API,開(kāi)發(fā)簡(jiǎn)單、周期短。第三,Android具有很強(qiáng)的開(kāi)放性和靈活性。雖然現(xiàn)在市場(chǎng)上已經(jīng)出現(xiàn)各種各樣的智能家居終端,但Android的出現(xiàn)及其廣泛應(yīng)用,使得很多智能家居廠商正投入很大的人力物力進(jìn)行研究開(kāi)發(fā)基于Android的智能家居終端。
1 Android系統(tǒng)
1.1 Android架構(gòu)

    Android是一個(gè)包括操作系統(tǒng)、中間件和關(guān)鍵應(yīng)用程序的移動(dòng)設(shè)備軟件堆。其作為一個(gè)開(kāi)發(fā)式的系統(tǒng)平臺(tái),包含了眾多的功能和龐大的基于Linux的代碼,在用戶空間又分為本地代碼(C/C++)和Java代碼。Android系統(tǒng)可以分為以下各層次:
    自底向上依次為L(zhǎng)inux操作系統(tǒng)及其驅(qū)動(dòng)層、本地代碼框架和Java虛擬機(jī)層、Java框架層和Java應(yīng)用程序?qū)覽2]。在各層之間存在相應(yīng)的分界線接口。如圖1所示。

    作為開(kāi)放式的系統(tǒng),Android提供了豐富的組件和視圖控件。大部分的開(kāi)發(fā)只需要調(diào)用Android應(yīng)用框架層提供的API就可以方便地完成,并且在Android的SDK中提供了豐富的實(shí)例供參考學(xué)習(xí),使得應(yīng)用開(kāi)發(fā)簡(jiǎn)單易行。Android各層次的功能如表1所示。

1.2 Android應(yīng)用程序的組成
    一個(gè)程序可以調(diào)用另外一個(gè)程序的程序片段。這是Android程序框架的基本設(shè)計(jì)理念。例如,在Windows操作系統(tǒng)中,資源管理器可以瀏覽圖片文件,當(dāng)瀏覽到這個(gè)圖片文件時(shí),雙擊該圖片文件,便啟動(dòng)圖片瀏覽軟件。Android的程序理念便是如此,所不同的是,在Windows中,打開(kāi)圖片會(huì)啟動(dòng)圖片瀏覽軟件的全部功能,雖然實(shí)際上只是需要查看圖片;Android中是把一個(gè)程序的功能分為各種不同的程序片段,每個(gè)程序片段都能單獨(dú)啟動(dòng)。
     Android應(yīng)用程序由Activity、Service、Broadcast Receiver和Content Provider四大組件構(gòu)成。這四大組件也稱為Android的四種類(lèi)型的程序片段,且每種類(lèi)型都可以獨(dú)立運(yùn)行。
     Activity在四大組件中最復(fù)雜。從視覺(jué)上看,一個(gè)Activity占據(jù)當(dāng)前的窗口,響應(yīng)所有窗口事件,具有控件、菜單等界面元素,為用戶提供一個(gè)與界面交互的平臺(tái)。從內(nèi)部邏輯來(lái)看,Activity需要為了保持各個(gè)界面狀態(tài),需要做很多持久化的工作,還需要妥善管理生命周期和一些轉(zhuǎn)跳邏輯。
     Service就是剝離了界面的Activity,都是封裝有一個(gè)完整的功能邏輯實(shí)現(xiàn),只不過(guò)Service不拋頭露臉,默默提供后臺(tái)服務(wù)。舉例,當(dāng)用戶處理其他問(wèn)題時(shí),服務(wù)可以播放背景音樂(lè),或者可以從網(wǎng)上獲取數(shù)據(jù)、計(jì)算、提高,提供給活動(dòng)所需要的結(jié)果。
    Broadcast Receiver只能接收廣播,一個(gè)廣播可以有很多廣播接收器對(duì)它認(rèn)為重要的通知作出反應(yīng)。Android系統(tǒng)提供了一個(gè)sendBroadcast()方法,Application Framework內(nèi)部調(diào)用該方法發(fā)送廣播,比如有新短信息、有來(lái)電等廣播消息,Broadcast Receiver會(huì)響應(yīng)這些系統(tǒng)消息的獨(dú)立執(zhí)行單元[4]。
    Content Provider提供了一套特殊的可供其他應(yīng)用使用的數(shù)據(jù)。這些數(shù)據(jù)可以存儲(chǔ)在文件系統(tǒng)中、SQLite數(shù)據(jù)庫(kù)中或者其他有意義的形式。實(shí)現(xiàn)了一套標(biāo)準(zhǔn)的允許其他用戶檢索、儲(chǔ)存數(shù)據(jù)的方法。通過(guò)使用ContentProvider的實(shí)例,調(diào)用它的方法。
    Intent是Android中一個(gè)特殊的類(lèi),組件之間的通訊,由Intent協(xié)助完成。Intent負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。Intent在這里起著實(shí)現(xiàn)調(diào)用者與被調(diào)用者之間的解耦作用,如圖2所示。

2 智能家居終端
2.1 終端主要功能

    智能家居終端的主要功能如下[5]:
   (1)可視對(duì)講。室內(nèi)機(jī)與門(mén)口機(jī)進(jìn)行可視對(duì)講;室內(nèi)機(jī)可以監(jiān)視門(mén)口情況;訪客留影;兩個(gè)或多個(gè)室內(nèi)機(jī)進(jìn)行視頻對(duì)話。
  (2)家居安防。防區(qū)設(shè)定:對(duì)室內(nèi)和室外安裝的監(jiān)視器進(jìn)行獨(dú)立的設(shè)定;報(bào)警:監(jiān)視器偵測(cè)到異常發(fā)出報(bào)警;家居安防模式設(shè)定:外出、在家、就寢等。
  (3)家居控制。燈光控制;窗簾控制;空調(diào)控制;電源控制;燃?xì)忾y控制;電梯控制。
  (4)生活資訊。天氣預(yù)報(bào);萬(wàn)年歷;常用電話;物業(yè)服務(wù)。
  (5)系統(tǒng)管理。常用設(shè)置;使用說(shuō)明;安防設(shè)置;家居設(shè)置。
    系統(tǒng)結(jié)構(gòu)功能如圖3所示。


2.2 軟件系統(tǒng)架構(gòu)
 整個(gè)軟件系統(tǒng)架構(gòu)分為四個(gè)層次,每個(gè)層次的功能分別如下:
    (1)操作系統(tǒng)層。對(duì)下為各種硬件設(shè)備提供外圍設(shè)備驅(qū)動(dòng),控制硬件工作,如音視頻的采集播放設(shè)備、各類(lèi)傳感器、攝像頭等;對(duì)上為庫(kù)函數(shù)提供各種設(shè)備的驅(qū)動(dòng)接口,以使得上層可以調(diào)用設(shè)備。
   (2)庫(kù)和接口層。該主要提供給應(yīng)用框架層一些基本的類(lèi)庫(kù)和接口,包括Android的C/C++庫(kù)、RTP/RTCP庫(kù)和多媒體的處理接口。
    (3)應(yīng)用框架層。該層采用模塊化開(kāi)發(fā)方法,通過(guò)使用其下層的函數(shù)庫(kù)提供的接口,將實(shí)現(xiàn)相同或相似功能的封裝成為一個(gè)模塊進(jìn)而供應(yīng)用層來(lái)開(kāi)發(fā)使用。
   (4)應(yīng)用層。通過(guò)與應(yīng)用框架層提供的模塊相互交互、資源分配等,基于Android的四大組件及其他相關(guān)視圖控件完成界面設(shè)計(jì),為用戶提供一個(gè)可視的界面平臺(tái)。在該軟件架構(gòu)下,涉及到的功能模塊有信號(hào)處理模塊、網(wǎng)絡(luò)管理模塊、媒體流管理模塊以及信息存取模塊。
2.3 功能模塊的實(shí)現(xiàn)
2.3.1 主控制模塊

    最上層為主控制模塊,是系統(tǒng)的主要模塊,通過(guò)使用Android的各種組件和控件,在應(yīng)用層實(shí)現(xiàn)系統(tǒng)的主要功能。一方面,通過(guò) Android的資源文件如布局、菜單、視圖等提供的各種類(lèi)和方法來(lái)完成系統(tǒng)的GUI設(shè)計(jì),提供給用戶一個(gè)統(tǒng)一的圖形化接口給用戶。另一方面,通過(guò)使用應(yīng)用框架中的信號(hào)處理、網(wǎng)絡(luò)管理、媒體流管理、信息存儲(chǔ)等功能模塊接口,分別實(shí)現(xiàn)門(mén)磁控制、家居安防、家居控制、生活資訊、可視對(duì)講及系統(tǒng)管理的功能。在此模塊中的門(mén)磁控制可以直接控制房門(mén)的開(kāi)關(guān)[6]。
    所有的功能都聚集在主模塊中,這就需要一個(gè)合理的布局才能使系統(tǒng)使用起來(lái)比較協(xié)調(diào)。由于每個(gè)Activity中包含一個(gè)Window,每個(gè)Window中包含一個(gè)View Group,而每個(gè)View Group中包含更多的View和View Group。在主模塊中的布局如圖4所示。

2.3.3 網(wǎng)絡(luò)管理模塊
    網(wǎng)絡(luò)管理模塊主要為生活資訊提供服務(wù)。此模塊提供服務(wù)的分為兩種。一種為局域網(wǎng)服務(wù),如物業(yè)服務(wù)。這里實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,用戶根據(jù)系統(tǒng)所提供的設(shè)備名稱向中心管理機(jī)報(bào)備需要服務(wù)的設(shè)備。例如:點(diǎn)擊某個(gè)設(shè)備,終端向中心管理機(jī)發(fā)送一條“智能設(shè)備需要服務(wù)”指令。物業(yè)收到該指令后,會(huì)主動(dòng)聯(lián)系該用戶。另一種為Intenet服務(wù),需要提供各種信息的Web服務(wù),如天氣。
2.3.4 媒體流管理模塊
    媒體流管理模塊是為可視對(duì)講提供服務(wù)的。在系統(tǒng)中通過(guò)調(diào)用Android的OpenCORE接口來(lái)實(shí)現(xiàn)音視頻的編解碼。OpenCORE是Android多媒體框架的核心,所有Android平臺(tái)的音頻、視頻的采集以及播放等操作都是通過(guò)它來(lái)實(shí)現(xiàn)的。它主要包含了兩個(gè)大方面的內(nèi)容:
    PVPlayer:提供媒體播放器的功能,完成各種音頻、視頻流的回放功能。
    PVAuthor:提供媒體流記錄的功能,完成各種音頻、視頻流以及靜態(tài)圖像的捕獲功能。
    當(dāng)門(mén)口機(jī)需與室內(nèi)機(jī)請(qǐng)求對(duì)講時(shí),室內(nèi)機(jī)只需要對(duì)門(mén)口機(jī)傳輸過(guò)來(lái)的音視頻進(jìn)行解碼播放,即Android調(diào)用MediaPlayer類(lèi)用來(lái)播放音頻、視頻。
    當(dāng)兩個(gè)室內(nèi)機(jī)進(jìn)行視頻對(duì)講時(shí),雙方機(jī)器要同時(shí)進(jìn)行音視頻的編碼解碼。這時(shí)就要同時(shí)調(diào)用MediaPlayer類(lèi)和MediaRecorder類(lèi)。MediaRecorder類(lèi)用來(lái)進(jìn)行媒體采樣,包括音頻和視頻。
2.3.5 信息存取模塊
    信息存取模塊主要為系統(tǒng)管理提供開(kāi)發(fā)接口以實(shí)現(xiàn)對(duì)系統(tǒng)的管理。如智能家居系統(tǒng)的終端系統(tǒng)管理模塊主要提供本機(jī)設(shè)置、安防設(shè)置、家居設(shè)置、使用幫助等功能。本機(jī)設(shè)置包括本機(jī)的網(wǎng)絡(luò)設(shè)置、樓棟單元號(hào)房間號(hào)設(shè)置、密碼設(shè)置等;安防設(shè)置可以對(duì)室內(nèi)的各個(gè)安防設(shè)備進(jìn)行布防和撤防設(shè)置;家居設(shè)置則可以調(diào)整家用電器的斷電或啟動(dòng)時(shí)間;使用幫助則是關(guān)于本機(jī)的使用說(shuō)明。設(shè)置的一般過(guò)程為先通過(guò)相應(yīng)的get方法獲得要設(shè)置的狀態(tài),然后通過(guò)set方法保存設(shè)置。
2.4 模塊封裝

 


    本文開(kāi)發(fā)是按照Android開(kāi)發(fā)規(guī)范進(jìn)行,應(yīng)用層使用Java語(yǔ)言,在底層的一些本地庫(kù)和接口開(kāi)發(fā)過(guò)程中,考慮到代碼的使用效率及開(kāi)發(fā)的簡(jiǎn)易性,采用了JNI,是由C/C++語(yǔ)言實(shí)現(xiàn)的。如圖6為實(shí)現(xiàn)效果圖。

    整個(gè)系統(tǒng)充分利用了Android內(nèi)部資源,極大地提高了開(kāi)發(fā)效率。測(cè)試結(jié)果表明系統(tǒng)的穩(wěn)定性極高,具有較強(qiáng)的實(shí)用性。
參考文獻(xiàn)
[1] 邵長(zhǎng)彬,張重陽(yáng),鄭世寶.基于Android的可視IP電話多媒體終端設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2011,3(6):62-65.
[2] 柯元旦,宋銳.Android程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社, 2010:12-35.
[3] 尹浩,陳美鑾,黎飄.基于FPSLIC的網(wǎng)絡(luò)家居終端系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2006,27(8):1442-1445.
[4] 楊豐盛.Android應(yīng)用開(kāi)發(fā)揭秘[M].北京:機(jī)械工業(yè)出版社,2009:188-219.
[5] 金鑫.基于ARM-Linux的智能家居網(wǎng)絡(luò)終端的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù), 2010,6(7):1612-1618.
[6] 宋小青,周東升.基于Android平臺(tái)的應(yīng)用開(kāi)發(fā)研究[J].軟件導(dǎo)刊,2011,10(2):104-106.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。