曾慶磊,魏忠義
(西安工程大學 陜西 西安 710048)
近幾年來,移動互聯(lián)網(wǎng)在全世界呈現(xiàn)出蓬勃發(fā)展的態(tài)勢。手機移動終端設備己經(jīng)不僅僅只是用來打電話發(fā)信息。借助于智能設備操作系統(tǒng),手機已經(jīng)具備豐富多樣的功能,跨越了僅僅將通信作為唯一目標的模式,而變成具有更多市場的手持終端控制設備。將Android移動操作系統(tǒng)為平臺的智能手機和智能家居的概念結合起來,以智能手機作為智能家居的控制端,以Android操作系統(tǒng)為平臺,開發(fā)特定的應用程序安裝在智能手機上,通過操作智能手機上的應用程序?qū)崿F(xiàn)對家居生活中各種家用電器(如電燈、電視、空調(diào)等)的遠程控制和管理,即可以把智能手機當作遙控器來控制家電的各種狀態(tài)。由于智能手機體積小便于攜帶,擴展性強,而且憑借其強大的計算和存儲能力從而可以實現(xiàn)豐富復雜的遙控功能,是作為智能家居的手持控制終端的理想選擇[1]。Android智能設備操作系統(tǒng)憑借著其優(yōu)異的平臺性能、高度開放的發(fā)展策略、和眾多戰(zhàn)略伙伴的支持,已占據(jù)了龐大的市場份額。基于Android系統(tǒng)的智能手機作為智能家居的控制終端具有廣闊的市場潛力。
Android是IT巨頭谷歌公司推出的一款移動設備操作系統(tǒng),作為移動設備的平臺,其軟件層次結構自下而上共分為4層,依次為應用程序?qū)印贸绦蚩蚣軐?、系統(tǒng)運行庫層和Linux內(nèi)核層[2]。Android以Java作為開發(fā)語言,以開源IDE Eclipse作為開發(fā)平臺,使用Android SDK、Java開發(fā)包JDK、開發(fā)插件ADT進行軟件開發(fā)與調(diào)試[3]。下面介紹在windows 7系統(tǒng)下開發(fā)Android應用程序的環(huán)境搭建步驟[4]。
1)JDK 的安裝
通過Android系統(tǒng)構架可以知道,要進行開發(fā)需要下載java的開發(fā)環(huán)境,首先需要下載完整的JDK開發(fā)包。Android SDK需要JDK5以上版本,下載穩(wěn)定性良好的JDK6,雙擊可執(zhí)行文件,接收許可協(xié)議,完成安裝。為了使用java工具進行編譯、運行 需要配置java環(huán)境變量,采取相對路徑的方法,需要配置的3個環(huán)境變量:JAVA_HOME CLASSPATH和PATH。
2)安裝配置Android SDK和Eclipse
開發(fā)Android應用程序需要下載相關的Android SDK。根據(jù)自己電腦的操作系統(tǒng)版本下載Android SDK軟件包,下載完成后,打開目錄找到SDK Setup.exe可執(zhí)行文件,雙擊該文件即可安裝。Android SDK包含了Android應用所依賴的jar文件 運行環(huán)境及相關工具。并把Android SDK下的tools目錄添加到windows7的PATH環(huán)境變量中。
3)安裝集成Eclipse開發(fā)環(huán)境
下載Eclipse3.5開發(fā)包,完成安裝。啟動Eclipse,選擇Help>Install New Software,在出現(xiàn)的對話框里單擊Archive按鈕,瀏覽和選擇已經(jīng)下載的ADT插件壓縮文件,ADT即Android Development ToolKit Android開發(fā)工具包。單擊Next按鈕,彈出對話框重啟Eclipse即可。 ADT安裝完成后,在Eclipse中單擊Window|Android SDK Manager命令,啟動Android SDK Manager,在線下載相關開發(fā)工具、文檔、示例代碼等。
4)創(chuàng)建 AVD
在完成上述安裝配置過程后 就可以創(chuàng)建AVD。在Eclipse中單擊Window|AVD Manager命令,啟動Android虛擬設備管理器,設置基本信息參數(shù),單擊New按鈕,創(chuàng)建一個虛擬設備。 AVD提供了近乎真實手機的虛擬環(huán)境,以便于開發(fā)者進行調(diào)試和運行。完成綜上內(nèi)容就可以開始進行軟件內(nèi)容開發(fā)了。AVD界面圖如圖1所示。
圖1 Android模擬器界面圖Fig.1 The Android emulator interface diagram
如圖2所示整個系統(tǒng)主要包括3個部分:Android智能手機控制終端,家庭網(wǎng)關服務器和家用電器設備。用戶使用智能手機通過網(wǎng)絡 (GPRS、3G、WiFi)連接到家庭網(wǎng)關服務器后,然后通過手機終端發(fā)送帶有控制指令的數(shù)據(jù)包,服務器收到數(shù)據(jù)包經(jīng)過處理之后,再由服務器發(fā)送控制命令到相應的家電控制器上,以達到對各種家用電器的管理和控制[5]。本文中主要是智能手機控制終端的設計。
圖2 家電遙控整體框架圖Fig.2 Home appliances remote control overall frame
家居設施的主人及其家人才有對家電有掌控權,其他人不具備使用家電控制系統(tǒng)來控制家電的權利,因此要采取身份驗證的方式來決定家電系統(tǒng)的使用權。驗證的方式是通過輸入用戶名與密碼是否和服務器中的數(shù)據(jù)庫保存的數(shù)據(jù)一致,只有通過驗證的用戶才可以進入家電控制系統(tǒng)的主功能界面。具體的流程如圖3。
圖3 登陸功能流程圖Fig.3 Flow chart of landing function
用戶在點擊應用軟件圖標后,系統(tǒng)會跳轉(zhuǎn)到登陸界面,輸入自己設定好的用戶名和密碼,點擊登錄按鈕,系統(tǒng)會進行驗證。系統(tǒng)把用戶輸入的用戶名與密碼與家庭網(wǎng)關服務器中數(shù)據(jù)庫所保存的數(shù)據(jù)逐一比較,只有用戶名和密碼與數(shù)據(jù)庫中保存的完全匹配,系統(tǒng)才會跳轉(zhuǎn)到主功能界面,如二者有其一不與數(shù)據(jù)庫吻合,登錄就會失敗,系統(tǒng)彈出“用戶或密碼錯誤,請重試!”的對話框,然后跳轉(zhuǎn)回登陸界面以供用戶重新登陸。
用戶成功登錄系統(tǒng)進入到主功能界面后,主功能界面提供用戶各種可供操作的家電應用模塊,用戶根據(jù)控制需要點擊對應的家電控制模塊,進入功能控制界面,選擇要控制的功能后,系統(tǒng)向家庭網(wǎng)關服務器提供控制請求,網(wǎng)關收到請求后經(jīng)過信息處理,然后把控制信息發(fā)送給相應的家電。進行家電控制時,家電控制程序首先判斷手機終端是否與家庭網(wǎng)關服務器建立連接,如果已經(jīng)連接,就可以直接通過進程間通信方式發(fā)送控制消息到家庭網(wǎng)關,網(wǎng)關收到請求后經(jīng)過信息處理,然后把控制信息發(fā)送給相應的家電。如果沒有連接,在手機終端系統(tǒng)中需要控制的家電模塊中輸入網(wǎng)關的ip地址及控制家電模塊的端口號連接家庭網(wǎng)關服務器,然后直接發(fā)送家電控制消息到家庭網(wǎng)關服務器??刂乒δ芰鞒虉D如圖4所示。
圖4 控制功能流程圖Fig.4 Flow chart of control function
實現(xiàn)手機終端與家庭網(wǎng)關服務器之間的連接涉及Socket通信。 Socket通信是一種基于客戶/服務器模式的通信模式,使用 Socket能夠?qū)崿F(xiàn)兩個應用程序的網(wǎng)絡連接[6-8]。
圖5展示了Socket編程實現(xiàn)網(wǎng)絡連接的過程。
圖5 Socket通信流程圖Fig.5 Flow chart of Socket communication
智能手機終端發(fā)送到家庭網(wǎng)關服務器的控制指令是通過socket通信協(xié)議來完成的。智能手機作為Socket的通信客戶端,家庭網(wǎng)關作為Socket通信的服務器端,手機發(fā)送控制命令請求連接到家庭網(wǎng)關,服務器監(jiān)聽到請求后建立連接。
客戶端的通信步驟如下:
1)建立客戶端socket服務。指定要連接的服務器的ip地址和端口號
2)獲取socket流中的輸出流。將數(shù)據(jù)寫到該流中。通過網(wǎng)絡發(fā)送給服務端。
3)獲取socket流中的輸入流,獲取服務端反饋的數(shù)據(jù)。
4)通信結束后,關閉客戶端socket服務資源。
服務器端的通信步驟如下:
1)建立服務端的 socket服務,ServerSocket();開始監(jiān)聽來自客戶端的連接請求;
2)獲取連接過來的客戶端對象。通過ServerSokcet的accept方法。
3)連接成功后,服務端與客戶端之間進行數(shù)據(jù)傳輸。
4)通信結束后,關閉服務端socket服務。
智能手機作為客戶端發(fā)起Socket請求,主要程序和注釋如下:
Socket s=new Socket(ip,port);//創(chuàng)建客戶端的 socket服務。指定目的主機和端口
OutputStream out=s.getOutputStream();//為了發(fā)送數(shù)據(jù),應該獲取socket流中的輸出流。
out.write(msg.getBytes()); //寫數(shù)據(jù),字符串 msg 是需要傳遞到服務器的數(shù)據(jù)
out.flush(); //刷新輸出流
InputStream in=s.getInputStream();
//接收服務端傳回的數(shù)據(jù),那么要使用客戶端對象的讀取流來讀取數(shù)據(jù)。
String txt=reader.readLine();//按行讀取收到的數(shù)據(jù)并放到字符串變量txt中
out.close(); //關閉輸出流in.close(); //關閉讀取流
s.close(); //關閉 Socket通信
家庭網(wǎng)關作為開啟一個線程來實現(xiàn)和客戶端的Socket通信,主要程序和注釋如下:
ServerSocket ss=new ServerSocket (port); //建立服務端socket服務。并監(jiān)聽一個端口。
while(true){
Socket s=ss.accept ();//通過 accept方法獲取連接過來的客戶端對象。
InputStream in=ss.getInputStream ();//讀取獲取客戶端發(fā)送過來的數(shù)據(jù),
String str=in.readLine();//讀取從客戶端接收的數(shù)據(jù),字符串 str用來保存接收到的數(shù)據(jù)If(str==“……”)…… //對讀取到的數(shù)據(jù)進行操作
OutputStream out=ss.getOutputStream();//返回結果給客戶端。
in.close(); //關閉輸入流out.close(); //關閉輸出流
ss.close(); //關閉 Socket通信}
家電控制終端系統(tǒng)在經(jīng)Eclipse集成開發(fā)環(huán)境下完成設計、開發(fā)、調(diào)試后,可以在AVD模擬器上完好的運行,同時生成的后綴名為.apk應用軟件也可以安裝在Android智能手機上成功的運行。圖6所示為終端系統(tǒng)在模擬器上生成的登陸界面,在用戶正確的輸入用戶名和密碼后,點擊登錄按鈕,就可以跳轉(zhuǎn)到終端系統(tǒng)的主菜單界面,如圖7所示。用戶可以在主菜單界面上選擇和操作自己想要控制的家用電器。
圖7 主菜單界面圖Fig.7 Main menu interface diagram
如圖8,本終端系統(tǒng)包括了家庭設施中的燈光控制、空調(diào)控制、電視控制和洗衣機控制
燈光控制主要完成的功能有:客廳臥室廚房衛(wèi)生間各個房間的電燈開關;
空調(diào)控制主要完成的功能有:開關控制溫度調(diào)節(jié) ,模式轉(zhuǎn)換,風速調(diào)節(jié),掃風功能 ;
電視控制主要完成的功能有:開關、選臺、音量調(diào)節(jié)、電視菜單等;
洗衣機控制主要完成的功能有:洗滌、脫水、烘干、消毒。
如圖所示依次是燈光控制、空調(diào)控制、電視控制、洗衣機控制的功能控制界面。
本文主要介紹了基于Android智能手機的遠程家電控制的終端系統(tǒng)的設計。包括終端系統(tǒng)開發(fā)環(huán)境的搭建 ,登錄功能及控制功能的設計及手機端與服務器端之間的通信,最后在Eclipse集成開發(fā)環(huán)境下實現(xiàn)了該遠程家電控制的終端系統(tǒng)。在科技迅速發(fā)展的時代 ,智能移動設備與智能家居概念的結合能夠滿足人們傾向于追求方便高效舒適安全的現(xiàn)代化生活 ?;贏ndroid智能手機的遠程家電控制終端系統(tǒng)將更富時代氣息,更有優(yōu)勢,必然能獲得越來越多的市場認可,走進人們的家居生活中。
圖8 家電控制界面Fig.8 Home appliance control interface
[1]張錕.基于Android手機的智能遙控器設計[J].網(wǎng)友世界,2012(9):39-41.ZHANG Kun.Design of intelligent remote control device based on the Android mobile phone[J].Internet World,2012(9):39-41.
[2]李波,史江萍,王祥鳳.Android4.X從入門到精通[M].北京:清華大學出本社,2012.
[3]王雷,藍箭,陳雪娟,等.基于Android平臺的無線WiFi控制方法[J].微型電腦應用,2012,28(7):58-61.WANG Lei,LAN Jian-chen,XUE Juan,et al.The wireless access control method based on the Android platform[J].Microcomputer Applications,2012,28(7):58-61.
[4]李駿,陳小玉.Android驅(qū)動開發(fā)與移植[M].北京:人民郵電出版社,2012.
[5]陳莉,付蔚.基于Android的遠程家電控制終端設計[J].山西電子技術,2012(5):60-62.CHEN Li,F(xiàn)U Wei.Based on the Android remote electrical home appliances control terminal design[J].Journal of Electronic Technology in Shanxi,2012(5):60-62.
[6]邢欣.家居服務中的智能終端控制系統(tǒng)設計與應用[D].南京:南京郵電大學,2013.