基于Android的智能家居程序開發(fā)與研究
掃描二維碼
隨時隨地手機(jī)看文章
引言
在家庭網(wǎng)絡(luò)中部署的信息終端越來越多,在解決他們之間的物理互聯(lián)問題之后家庭用戶還需要對各個設(shè)備進(jìn)行一些復(fù)雜配置才能使用,這對于普通家庭用戶來說是難以接受的。加入到家庭網(wǎng)絡(luò)的設(shè)備如何能自動地相互發(fā)現(xiàn)并協(xié)同配合工作一直是數(shù)字家庭領(lǐng)域熱烈討論的問題。目前智能家居系統(tǒng)有了一定的發(fā)展并且市場上也開始出現(xiàn)相應(yīng)的產(chǎn)品。但從總體的發(fā)展來看不容樂觀,特別是統(tǒng)一標(biāo)準(zhǔn)和權(quán)威產(chǎn)品的缺乏嚴(yán)重影響了家居智能化的發(fā)展。隨著科技的進(jìn)步,經(jīng)濟(jì)的發(fā)展,人們的物質(zhì)生活水平不斷提高,對家居環(huán)境的要求也越來越高,作為家居智能化的核心部分一一智能家居控制系統(tǒng)也越發(fā)顯得重要。家居智能化控制的開發(fā)和建設(shè)是未來國家、經(jīng)濟(jì)發(fā)展的必然趨勢。智能家居控制器可以為系統(tǒng)提供智能控制方案使住戶的控制更便捷、更高效,更能為家庭的日?;顒庸?jié)約不必要的能耗。而且在現(xiàn)在這個注重綠色環(huán)保的世界里,智能地為住戶控制好空氣的濕度、溫度等檢查分析空氣成分,讓住戶安心入住同時,智能家居控制器可以根據(jù)住戶的要求調(diào)整方案,加強(qiáng)緊急處理、危機(jī)救護(hù)等急救控制。伴隨著科學(xué)技術(shù)的迅速發(fā)展和3G通信網(wǎng)絡(luò)的逐步普及,通過便捷的手機(jī)終端進(jìn)行遠(yuǎn)程家居監(jiān)控,成為更多忙于工作的職業(yè)人、領(lǐng)導(dǎo)以及智能手機(jī)用戶的迫切需要。Android是由開放手機(jī)聯(lián)盟于2007年11月5日發(fā)布的基于Linux內(nèi)核的開源手機(jī)軟件設(shè)計平臺,由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。Android給開發(fā)人員提供了為移動設(shè)備開發(fā)新穎的應(yīng)用程序的機(jī)會,正因為Android操作系統(tǒng)具有很強(qiáng)的擴(kuò)展性和互聯(lián)性,以及不存在任何以往阻礙移動產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙,得到了手機(jī)廠家和運(yùn)營商的普遍歡迎,憑借其系統(tǒng)的靈活性、開放性以及開放的互聯(lián)網(wǎng)理念,在操作系統(tǒng)平臺的競爭中占據(jù)了明顯的優(yōu)勢。本文設(shè)計的是基于三星S4智能手機(jī)完成的終端智能家居系統(tǒng)。
Android軟件平臺的構(gòu)成[2]
Android平臺整體自底向上由以下4個層次組成:Linux內(nèi)核層、Android運(yùn)行時庫和其他庫層、應(yīng)用框架層、應(yīng)用程序?qū)印?
Linux內(nèi)核層
Android是基于LinuxVersion216123內(nèi)核開發(fā)的,主要是添加了一個名為Goldfish的虛擬CPU以及Android運(yùn)行所需的特定驅(qū)動代碼。該層用來提供系統(tǒng)的底層服務(wù),包括安全機(jī)制、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)堆棧及一系列的驅(qū)動模塊。作為虛擬的中間層,該層位于硬件與其他的軟件層之間。
Android運(yùn)行時庫和其他庫層
Android運(yùn)行時庫包含一組核心庫(提供了Java語言核心庫內(nèi)的大部分功能)和Dalvik虛擬機(jī)。同時Android提供了豐富的庫類支持且大部分為開源代碼,如采用的數(shù)據(jù)庫為SQLite。Android選擇它作為移動終端的嵌入式數(shù)據(jù)庫有以下優(yōu)點:它無需安裝和管理配置,它是一個存儲在單一磁盤文件中的完整的數(shù)據(jù)庫,體積只有250KB但支持?jǐn)?shù)據(jù)庫大小至
TB,提供了對事務(wù)功能和并發(fā)處理的支持,而且比目前流行的大多數(shù)數(shù)據(jù)庫運(yùn)行速度快。
1.3應(yīng)用框架層
在應(yīng)用框架,Android開發(fā)人員可以跟那些核心應(yīng)用一樣擁有訪問框架APIs的全部權(quán)限。應(yīng)用的結(jié)構(gòu)化設(shè)計簡化了各組件之間的重用,任何應(yīng)用都可以分發(fā)自己的組件,任何應(yīng)用也可以使用這些分發(fā)的組件(應(yīng)用的使用方法需遵循框架的安全性約束)。
1.4應(yīng)用程序?qū)?
Android本身會附帶一些核心的應(yīng)用程序,包括E-mail客戶端、短信程序、日歷、地圖、瀏覽器、通信錄等,目前所有的應(yīng)用程序都是由Java語言開發(fā)的。
2面向Web服務(wù)的智能家居控制系統(tǒng)軟件設(shè)計
面向Web服務(wù)的智能家居控制系統(tǒng)以EXPLORERF-CC2530系統(tǒng)為基礎(chǔ),將對單一用戶的家居設(shè)備控制上升到對整個建筑甚至建筑群的集中控制和管理,將建筑物或建筑群的所有信息存儲在服務(wù)器的數(shù)據(jù)庫中,Android手機(jī)或者平板電腦通過網(wǎng)絡(luò)(3G/Internet/GPRS等)從服務(wù)器獲取實時數(shù)據(jù),服務(wù)器通過以太網(wǎng)與EXPLORERF-CC2530系統(tǒng)的網(wǎng)關(guān)進(jìn)行通信,房間控制器與室內(nèi)的家居設(shè)備相對應(yīng)的模塊通過無線的方式進(jìn)行通信,從而實現(xiàn)了遠(yuǎn)程控制家居設(shè)備的功能。系統(tǒng)省去了室內(nèi)控制器等硬件設(shè)計的復(fù)雜度,不必破壞隔墻,不必購買新的電氣設(shè)備,系統(tǒng)可以簡單安裝,減少了用戶的使用成本;系統(tǒng)可以只與照明設(shè)備或常用的電氣設(shè)備連接,將來也可以與其他設(shè)備連接,以適應(yīng)新的智能生活需要,具有良好的可擴(kuò)展性。本章首先介紹了Android遠(yuǎn)程數(shù)據(jù)庫的幾種方法并且選取了其中一種,然后實現(xiàn)了Android客戶端對遠(yuǎn)程服務(wù)器的訪問,最后對客戶端界面做了個性化設(shè)計。
2.1Android與遠(yuǎn)程數(shù)據(jù)庫通信的方法
近年來,隨著智能移動設(shè)備的快速發(fā)展和3G網(wǎng)絡(luò)的逐漸普及,以及Android系統(tǒng)憑借其開放性、多樣性等優(yōu)勢越來越受到開發(fā)人員的推崇,如騰訊、淘寶等知名網(wǎng)站都推出了Android客戶端版本,同時很多Window桌面的數(shù)據(jù)庫應(yīng)用程序都延伸到移動設(shè)備上。由于移動設(shè)備的內(nèi)存及性能很難比得上PC機(jī)或筆記本電腦,所以桌面的客戶端訪問數(shù)據(jù)庫的方法也不可能在Android設(shè)備上使用。MFC/Swing等C/S模式的程序設(shè)計可以通過IP地址直接訪問遠(yuǎn)程數(shù)據(jù)庫,但是Android平臺并沒有提供直接調(diào)用遠(yuǎn)程數(shù)據(jù)庫的接口,所以Android客戶端不能直接訪問遠(yuǎn)程數(shù)據(jù)庫[7]。而是在Android客戶端與遠(yuǎn)程數(shù)據(jù)庫中加入Web服務(wù)器來實現(xiàn)Android訪問遠(yuǎn)程數(shù)據(jù)庫的功能,而且在訪問數(shù)據(jù)庫的過程中可以把頻繁仿問的數(shù)據(jù)內(nèi)容緩存在Web服務(wù)器中,不同的客戶端不需要訪問遠(yuǎn)程數(shù)據(jù)庫便可以獲取相同的數(shù)據(jù),減少了訪問遠(yuǎn)程數(shù)據(jù)的次數(shù)和數(shù)據(jù)庫的壓力,提高了訪問數(shù)據(jù)庫的效率[6]。本系統(tǒng)Android客戶端訪問遠(yuǎn)程數(shù)據(jù)庫采用基于SOAP的Web服務(wù)實現(xiàn)遠(yuǎn)程訪問數(shù)據(jù)庫Android中并沒有直接調(diào)用WebService的庫,借助ksoap2-Android這個第三方工具來實現(xiàn)
WebService的訪問,這個軟件可以封裝KSOAP2請求,以SOAP的格式調(diào)用WebService,并以將返回的SOAP格式的數(shù)據(jù)解析為SoapObject對象。
2.2WebService技術(shù)
WebService是計算機(jī)領(lǐng)域一種新興的分布式技術(shù),是基于可編程的Web的應(yīng)用程序,具有發(fā)布、定位、調(diào)用的功能,WebService在被訪問時可以不考慮相關(guān)服務(wù)如何被實現(xiàn)便可以被任何系統(tǒng)、在任何地方被動態(tài)訪問。與傳統(tǒng)的模式相比,實現(xiàn)服務(wù)的訪問依賴于協(xié)議和數(shù)據(jù)格式,而不用像其他模式一樣依賴特定對象模型協(xié)議;而且WebService可以整合不同平臺、不同語言、不同開發(fā)技術(shù)的應(yīng)用,具有良好的封裝性、高度集成性、平臺獨(dú)立性等優(yōu)點。WebService的關(guān)鍵技術(shù)包括HTTP、XML、SOAP、WDSL、UDDI,這些技術(shù)通過獨(dú)立于特定編程語言、操作系統(tǒng)、硬件平臺的方式進(jìn)行通信。
3項目源程序開發(fā)
智能家居源程序主要功能模塊框架如圖1所示。
3.1登錄與注冊功能的界面設(shè)計
當(dāng)用戶擁有智能家居遠(yuǎn)程控制系統(tǒng)中的相關(guān)硬件,如環(huán)境模塊、房間控制器、設(shè)備模塊等,各模塊上標(biāo)示有唯一的ID,用戶可以根據(jù)ID進(jìn)行注冊,注冊成功后便可以登錄此系統(tǒng)對相關(guān)設(shè)備進(jìn)行控制。若用戶已經(jīng)注冊,則可以直接登錄認(rèn)證,登錄系統(tǒng)認(rèn)證的大致流程圖如圖2所示。
若用戶登錄成功,則系統(tǒng)直接跳轉(zhuǎn)到系統(tǒng)主界面;系統(tǒng)的主界面如圖3所示。若用戶名或密碼錯誤,則彈出錯誤提示框,圖 4 所示是系統(tǒng)給出的錯誤提示框圖。
3.2代碼的運(yùn)行
完成工程的創(chuàng)建和源代碼的編譯后就開始運(yùn)行程序。在Eclipse平臺中選擇Run>OpenRunDialog選項,打開運(yùn)行對話框。然后,在對話框左邊的typefiltertext下選擇AndroidApplication>contactnote,再點擊對話框中的Run按鈕,應(yīng)用程序就會被加載到仿真器上并開始運(yùn)行。
Android手機(jī)應(yīng)用程序開發(fā)需要著眼于它的整個體系構(gòu)架,是一項復(fù)雜的工程。本文分析了Android體系的層次架構(gòu),并在此基礎(chǔ)上介紹了Android應(yīng)用程序開發(fā)的相關(guān)技術(shù)和基本的開發(fā)流程oAndroid平臺具有極大的開放性和兼容性,相信廣大開發(fā)者可以借助AndroidSDK提供的強(qiáng)大技術(shù)支持,開發(fā)出豐富多彩、極具個性的移動應(yīng)用。
示框,圖4所示是系統(tǒng)給出的錯誤提示框圖。
20211119_6197c16bef5a4__基于Android的智能家居程序開發(fā)與研究