李 斌, 羅天放
(哈爾濱工程大學 信息與通信工程學院,哈爾濱 150001)
基于Android的網(wǎng)頁虛擬遙控器研究與實現(xiàn)
李 斌, 羅天放
(哈爾濱工程大學 信息與通信工程學院,哈爾濱 150001)
為了克服傳統(tǒng)遙控器的一系列缺點和使用上的不便,提出并實現(xiàn)了一種基于Android的網(wǎng)頁虛擬遙控器.遙控器主體是由Android平臺Web服務器和含有控制命令的網(wǎng)頁及遙控客戶端構成的.遙控客戶端可以是手機、平板電腦和臺式機等.Web服務器作為網(wǎng)頁虛擬遙控系統(tǒng)的核心部分,為遙控客戶端提供具有控制功能的網(wǎng)頁和解析遙控客戶端發(fā)送的命令,根據(jù)解析到的遙控客戶端發(fā)送的命令進行相應的操作.遙控客戶端通過訪問服務器網(wǎng)頁的方式,獲取到服務器的含有控制功能的網(wǎng)頁,通過此網(wǎng)頁,實現(xiàn)對Android設備或者是其他用電器的遙控.經(jīng)過調(diào)試,可以使用遙控客戶端實現(xiàn)播放Android Web服務器設備SD卡內(nèi)視頻和設置系統(tǒng)參數(shù)等功能.網(wǎng)頁虛擬遙控器控制簡單便捷,操作者易于使用,為智能家居的集中控制實現(xiàn)提出一種新的方法.
Android;Web服務器;遙控;網(wǎng)頁;控制
隨著電子設備的普及,相應遙控設備的使用頻率也越來越高,當前的遙控器大多是通過紅外進行控制的[1],它們的缺點是作用范圍有限,靈敏度不高,同時遙控設備上換下來的廢舊電池對環(huán)境也是一種污染.然而各種電子設備的遙控設備彼此并不通用,以普通家庭用戶為例,電視,空調(diào),機頂盒等電子設備各自有相應的遙控設備,使用起來極為不便,并且造成較大浪費.本文提出一種新的遙控方式,即網(wǎng)頁虛擬遙控器.此遙控方式是使用基于Android的設備和路由器構建Web服務器,使用任何系統(tǒng)的手機、平板電腦或者是臺式機作為遙控客戶端訪問Web服務器,本遙控器只要求遙控客戶端具有網(wǎng)頁瀏覽功能和接入路由功能即可,遙控客戶端通過獲得Web服務器網(wǎng)頁的方式,獲得含有控制功能的網(wǎng)頁,通過點擊網(wǎng)頁上的控制按鈕或者是在參數(shù)輸入框中輸入數(shù)據(jù),實現(xiàn)遙控Web服務器或者是其他用電器.這種遙控方式具有很好的通用性和兼容性;它還可以通過接入互聯(lián)網(wǎng)的設備實現(xiàn)遠程控制[2].相比于其他基于Android設備的遙控器,本遙控器具有以下優(yōu)點:不需要在遙控客戶端內(nèi)安裝額外的控制軟件,利用遙控客戶端的網(wǎng)頁瀏覽器既可以完成遙控;擴展性很強,當需要更改被遙控的功能時,只需要更改Web服務器里的相應的控制網(wǎng)頁即可,方便、快捷;為智能家居的便捷控制提供了一種新的方法,使用網(wǎng)頁虛擬遙控器,可以利用遙控客戶端在任何地點進行控制家用電器.
基于Android系統(tǒng)的Web服務器采用的主控芯片是Freescale公司的i.MX532,i.MX53系列處理器是飛思卡爾新一代基于ARM Cortex-A8內(nèi)核的高級多媒體和高能效處理器,每個內(nèi)核運行速率高達1.2 GHz.其性能和功耗均實現(xiàn)了優(yōu)化,可滿足高端、高級應用的嚴苛要求.i.MX53處理器含有集成顯示控制器、全高清(HD)支持、增強型圖形和連接功能,非常適用于消費電子、汽車和控制市場中的各種應用.遙控器系統(tǒng)結(jié)構框圖如圖1所示.
圖1 遙控器系統(tǒng)結(jié)構框圖
iMX532和外圍器件構成的硬件系統(tǒng)搭載Android智能操作系統(tǒng),通過以太網(wǎng)接口連接到路由器,構成了網(wǎng)頁虛擬遙控器的基本框架.遙控客戶端通過路由器訪問Web服務器獲得控制網(wǎng)頁,實現(xiàn)遙控.
1.1 Web服務器搭建
Web服務器是網(wǎng)頁虛擬遙控器的核心部分,為遙控客戶端提供具有控制功能的網(wǎng)頁,同時解析遙控客戶端發(fā)送過來的控制命令,從而進行相應操作.網(wǎng)頁遙控器進行遙控接入的客戶端數(shù)量不多,客戶端進行的操作也不涉及復雜或較大數(shù)據(jù)量的傳輸,因此沒有用成熟的i-jetty Web服務器,而是采用自己編寫Web服務器的方式,采用自己編寫服務器的優(yōu)點是對客戶端的控制命令會更加容易的獲取和操作,搭建Web服務器的關鍵步驟如下:
Web服務器使用Eclipse和ADT進行開發(fā).用ServerSocket類實現(xiàn)Web服務器外框的搭建,關鍵代碼如下所示:ServerSocket serverSocket = new ServerSocket(8080),在這里實例化一個serverSocket,在Android系統(tǒng)上實現(xiàn)監(jiān)聽8080端口,使用遙控客戶端訪問Web服務器時,訪問的端口是服務器監(jiān)聽的端口,這樣可以實現(xiàn)聯(lián)機上服務器.當有遙控客戶端連接上服務器后,通過實例化Socket類實現(xiàn)Web服務器和客戶端之間的連接,通過getInputStream()和getOutputStream()方法來獲取和發(fā)送IO流[3-4],服務器會給連接上的客戶端命名,關鍵代碼如下所示:Socket client=serverSocket.accept(),聯(lián)接上的遙控客戶端命名為client,遙控客戶端連接上服務器之后,通過數(shù)據(jù)流和服務器進行通信,需要對數(shù)據(jù)流進行封裝,關鍵代碼如下所示:BufferedReader br = (new BufferedReader(new InputStreamReader(client.getInputStream()))),把遙控客戶端發(fā)送的數(shù)據(jù)流封裝到名為br的buffer中,服務器可以對buffer中的數(shù)據(jù)進行操作,讀取命令,解析命令,根據(jù)命令實現(xiàn)相應的動作.
1.2 網(wǎng)頁搭建
網(wǎng)頁是網(wǎng)站中的一張頁面,通常是HTML格式擴展名為.html的文件.Web服務器中具有控制功能的網(wǎng)頁含有相應的按鈕或者是輸入框[5-6].這樣可以通過按鈕遙控或者是通過輸入框輸入?yún)?shù)來更改某些參數(shù).網(wǎng)頁虛擬遙控采用靜態(tài)網(wǎng)頁的方式,即事先將網(wǎng)頁內(nèi)容確定好,并存儲在服務器上.采用靜態(tài)網(wǎng)頁的原因是對于服務器的性能要求不高,成本低.
HTTP是一套設備之間通過網(wǎng)絡進行通信的規(guī)則.使得HTTP客戶(如Web瀏覽器)能從HTTP服務器(如Web服務器)請求信息和獲得服務,HTTP目前協(xié)議版本是1.1[7].在服務器中根據(jù)HTTP協(xié)議判斷客戶端請求判斷是否正確.關鍵代碼如下所示:if (requestString.toLowerCase().indexOf("http/1.") != -1),服務器會根據(jù)收到的數(shù)據(jù)進行判斷,如果收到的數(shù)據(jù)頭是正確的,即含有正確請求頭的數(shù)據(jù),服務器會向遙控客戶端發(fā)送含有控制功能的網(wǎng)頁.
網(wǎng)頁遙控器中的頁面含有按鈕和參數(shù)輸入框.使用的傳遞信息方法是POST或者GET方式,POST方式相對于GET方式具有保密性較高的優(yōu)點,然而GET方式實現(xiàn)簡單,在本遙控系統(tǒng)中,選取的傳遞信息方法是GET和POST結(jié)合方式,在傳遞按鈕內(nèi)容時使用GET方式,在傳遞輸入框參數(shù)時使用POST方式.
在本遙控系統(tǒng)中,搭建了幾個示例網(wǎng)頁,示例網(wǎng)頁內(nèi)容如圖2、3所示,這個網(wǎng)頁可以根據(jù)被控制的對象進行更改和添加相應功能.當被控制對象或者被控制功能升級后,只需要更改Web服務器里的網(wǎng)頁就可以實現(xiàn),無需更換遙控終端,用戶使用方便,且無需投入額外的資金進行遙控終端更換.
圖2 示例網(wǎng)頁1
圖3 示例網(wǎng)頁2
1.3 遙控功能的工作原理
基于Android設備的Web服務器啟動后,以多線程并發(fā)的方式,先啟動一個主線程,主線程除了要處理Activity的UI事件[8],還要處理Service后臺服務工作,主線程可以誕生多個子線程分擔其工作,特別是比較耗時的后臺服務工作[9].為了不占用主線程,使得主線程可以處理其他事宜,在本遙控系統(tǒng)中啟動另外一個線程實現(xiàn)遙控客戶端要實現(xiàn)的功能.
當遙控客戶端訪問Web服務器時,服務器判斷請求是否正確,如果請求正確,則發(fā)送含有控制功能的網(wǎng)頁,發(fā)送到遙控客戶端的網(wǎng)頁中含有相應的功能,當用戶操作網(wǎng)頁實現(xiàn)某些功能時,遙控客戶端會把相應的命令發(fā)送到服務器,服務器解析到命令后,要把命令傳遞出去,但在Android系統(tǒng)中,Android不允許Activity新啟動的線程訪問該Activity里的界面組件,這樣就導致新啟動的線程無法動態(tài)改變界面組件的屬性值,但在實際中需要讓新啟動的線程周期性的改變界面組件的屬性值,這時需要借助于Handler的消息傳遞機制來實現(xiàn).Handler類的主要作用有兩個:1)在新啟動的線程中發(fā)送消息2)在主線程中獲取、處理消息.為了讓主線程能“適時”地處理新啟動的線程所發(fā)送的消息,只能通過回調(diào)的方式來實現(xiàn),因此需要重寫Handler類中處理消息的方法,當新線程發(fā)送消息時,Handler類中處理消息的方法將自動被回調(diào)[10].
服務器解析出來的命令,利用Handler的消息傳遞機制把解析出來的命令發(fā)送給主線程,主線程執(zhí)行相應的動作可以實現(xiàn)控制功能,當一次控制結(jié)束之后,服務器會關閉輸入輸出流,清除客戶端連接,這樣一次控制就結(jié)束了,當用戶點擊控制網(wǎng)頁上的其他按鈕之后,服務器一直會重復以上流程.
網(wǎng)頁虛擬遙控器工作流程圖如圖4所示.
2.1 客戶端連接服務器
在Web服務器建立好之后,遙控客戶端連接上路由器,在客戶端的網(wǎng)頁瀏覽器地址欄輸入服務器的IP地址和服務器監(jiān)聽端口,客戶端會收到服務器發(fā)送過來的網(wǎng)頁,示例網(wǎng)頁如圖2、3所示,圖2中每個按鈕可以代表一個命令,這個網(wǎng)頁只是個示例網(wǎng)頁,實際中可以根據(jù)要實現(xiàn)的控制功能添加相應的按鈕或者是輸入框.這個網(wǎng)頁是服務器內(nèi)預置好的,可以隨時修改.網(wǎng)頁中有按鈕,每個按鈕代表的意義不一樣,同時每個按鈕的關鍵字也不一樣,用戶點擊某個按鈕,服務器會根據(jù)這個按鈕的關鍵字解析命令,解析到命令之后,服務器就可以進行相應的控制動作.
圖4 網(wǎng)頁虛擬遙控器工作流程
2.2 電影播放
我們用手機連接服務器,演示電影播放功能.手機連接上服務器之后,收到服務器發(fā)送的控制網(wǎng)頁,如圖2所示,用戶點擊電影播放按鈕,此時網(wǎng)頁瀏覽器會把控制網(wǎng)頁中電影播放按鈕的控制代碼發(fā)送到服務器,服務器對收到的數(shù)據(jù)進行解析,解析到命令是播放電影之后,服務器對內(nèi)置的電影文件進行遍歷,同時把電影文件名字包含在每個按鈕中,生成一個靜態(tài)網(wǎng)頁,這個網(wǎng)頁是服務器收到電影播放命令之后生成的,之前并不存儲在服務器內(nèi),服務器以向遙控客戶端打印輸出的方式把這個電影播放控制網(wǎng)頁發(fā)送到客戶端,如圖5所示.
圖5 電影播放列表
點擊圖5的某個按鈕之后,遙控客戶端會把這個按鈕代表的電影名稱傳給服務器,服務器解析到電影播放命令,同時會獲取電影名稱,通過Handler把電影名稱參數(shù)傳遞給主線程,主線程啟動視頻播放器播放相應的電影.
2.3 系統(tǒng)參數(shù)設置
點擊圖2實例網(wǎng)頁的系統(tǒng)參數(shù)設置網(wǎng)頁,客戶端收到如圖3所示的網(wǎng)頁,在此我們設置系統(tǒng)參數(shù)是“123”,如圖6所示.
圖6 設置系統(tǒng)參數(shù)
用戶點擊“提交”按鈕,服務器從輸入流中解析到含有“123”的字符串,如圖7所示.
GET/keycode=SYSTEM?IP1=&IP2=123&Subit=%E6%8F%90%E4%BA%4HTTP/1.1
圖7 服務器截獲含有“123”的數(shù)據(jù)流
服務器把“123”從字符串中截取出來,可以存儲在本地SD卡中,或者是直接對某些參數(shù)進行設置.
本文研究了在Android系統(tǒng)下實現(xiàn)Web服務器的關鍵技術,克服了Android下搭建Web服務器的相關難點和問題,搭建了Android設備上Web服務器,實現(xiàn)了基于Web服務器進行網(wǎng)頁遙控的功能.說明網(wǎng)頁遙控相比其他遙控方式具有可更新性好、擴展性強的優(yōu)勢.網(wǎng)頁遙控器的客戶端可以是手機,平板電腦,甚至可以是任意能夠進行網(wǎng)絡互聯(lián)含有網(wǎng)頁瀏覽器的電子器件,只要可以連接到服務器的網(wǎng)絡,就可以進行控制,使用靈活、方便,利用Web服務器還可以實現(xiàn)遠程遙控和監(jiān)控.由于省去了傳統(tǒng)遙控器實體,較大的節(jié)約了電器生產(chǎn)廠商的成本,同時,為實現(xiàn)一臺遙控器對所有電子設備的控制提供了完善可行的方式方法,方便了用戶的操作、使用和更新.網(wǎng)頁虛擬遙控器為智能家居的操作控制領域的發(fā)展提供了一種新的方法,具有較大的實用價值.
[1] 蔡 勇. 基于FPGA的多功能紅外遙控器設計[D]. 成都: 電子科技大學, 2007. 8-10.[2] VU N, TRUONG, VU D L. Remote Monitoring and Control of Industrial Process Via Wireless Network and Android Platform [C] //International Conference on Control, Automation and Information Sciences.2012.340-343 .
[3] 劉 博. 嵌入式Web服務器設計與實現(xiàn)[D]. 西安: 西安電子科技大學, 2006. 31-36.
[4] CHENG X Y, DANG G Q. Design and Implementation of Instant Communication System Based on the Android Platform Terminal [J]. Applied Mechanics and Materials, 2014, 602(605): 3325-3328.
[5] ZHAN M Q, JI C P. Research and Implementation of Embedded Web Serve[C]//International Conference on MultiMedia and Information Technology, 2008: 123-125.
[6] NOBUO F, YOSUKE I, MEHUMI I,etal.A Proposal of a Web-page Layout Optimization Method for Multimodal Browsing Sizes[C]//The 13th IEEE International Symposium on Consumer Electronics. Japan, 2009. 894-898.
[7] HU J, WANG K, WU L. Design of Remote Video Monitoring System Based On Arm-Linux Platform and HTTP Protocol [C]//International Conference on Genetic and Evolutionary Computing, 2011. 365368.
[8] 吳想想. 基于Android平臺軟件開發(fā)方法的研究與應用[D]. 北京: 北京郵電大學, 2011. 23-25.
[9] 李艷麗. Android事件處理過程剖析[J].長春理工大學學報, 2010, 33(3): 1-3.
[10] 郭定聰. 基于Web服務器的Android手機管理系統(tǒng)的設計與實現(xiàn)[D]. 成都: 電子科技大學, 2013. 15-20.
Research and implementation of web virtual remote control based on Android
LI Bin, LUO Tian-fang
(School of information and Communication Engineering, Harbin Engineering University, Harbin 150001, China)
Because of the inconvenience and shortcomings about traditional remote control, a web virtual remote control was proposed based on Android. Web virtual remote control system was consisted of Android Web server, web pages with remote control commands and clients. Remote clients can be mobile phones, tablet PCs and desktop machines. Web server as a core part of the web remote control system, provides the web pages with remote control commands for remote client and parse the command from client, according the command do the action. The client accesses the server and gets the control page. The user clicks the buttons on page or input parameters in the input box. The Android devices or other appliance can be remoted. After debugging, web virtual remote can remote control play video in Android device SD card, set system parameters and other functions. Web remote control was simple, the operator was very easy to use.
Android; Web server; remote; web page; control
2014-12-07.
李 斌(1989-),男,碩士,研究方向:嵌入式處理器應用.
TP393
A
1672-0946(2015)05-0589-04