李社蕾 孫天宇
(三亞學(xué)院理工學(xué)院,海南 三亞 572022)
基于Android的幻燈片控制器
李社蕾 孫天宇
(三亞學(xué)院理工學(xué)院,海南 三亞 572022)
本設(shè)計(jì)通過(guò)Android操作系統(tǒng)的移動(dòng)設(shè)備對(duì)個(gè)人計(jì)算機(jī)進(jìn)行控制,從而對(duì)幻燈片、MediaPlayer等軟件或桌面進(jìn)行遠(yuǎn)程操作。完成了MediaPlayer的直接控制以及通過(guò)觸屏模擬電腦觸摸板從而實(shí)現(xiàn)模擬鼠標(biāo)的操作功能,實(shí)現(xiàn)了通過(guò)Android手機(jī)等觸屏設(shè)備對(duì)個(gè)人電腦的幻燈片操作。
Android;控制;客戶端;服務(wù)器
隨著Android操作系統(tǒng)的快速發(fā)展,Android移動(dòng)設(shè)備也不斷增加。遠(yuǎn)程控制軟件的發(fā)展也到達(dá)了一個(gè)新領(lǐng)域[1]?;脽羝刂破髟O(shè)計(jì)與實(shí)現(xiàn),意在便利使用者的工作與生活[2]。軟件通過(guò)Android操作系統(tǒng)的移動(dòng)設(shè)備對(duì)個(gè)人計(jì)算機(jī)進(jìn)行控制,從而實(shí)現(xiàn)對(duì)于幻燈片、MediaPlayer等軟件或桌面的遠(yuǎn)程操作。
2.1 幻燈片控制器PC端服務(wù)器設(shè)計(jì)
服務(wù)器端使用Java編寫。需要獲取本機(jī)IP,對(duì)于用戶填寫的端口號(hào)進(jìn)行合法性的驗(yàn)證。對(duì)于客戶端發(fā)送來(lái)的信息進(jìn)行處理反饋,并在個(gè)人電腦中執(zhí)行相應(yīng)的操作。如圖1所示。
2.3 程序執(zhí)行流程圖
程序執(zhí)行過(guò)程可大致分為:
(1)準(zhǔn)備階段,在PC端啟動(dòng)用于接收指令的服務(wù)器程序監(jiān)聽設(shè)定端口,客戶端獲取用戶填寫IP以及端口號(hào)。
(2)信息發(fā)送階段:用戶與UI產(chǎn)生互動(dòng),客戶端向指定端口發(fā)送信息。
(3)信息接收階段:服務(wù)器從所監(jiān)聽端口獲取相應(yīng)數(shù)據(jù)并按規(guī)則拆分。
(4)響應(yīng)階段:服務(wù)器接收信息后對(duì)信息進(jìn)行相應(yīng)處理,并對(duì)個(gè)人電腦進(jìn)行操作。
流程圖如圖3所示。
圖3 程序執(zhí)行流程
圖1 服務(wù)器端執(zhí)行流程圖
2.2 幻燈片控制器Android客戶端設(shè)計(jì)
系統(tǒng)包括幻燈片控制器,鼠標(biāo)控制器,以及mediaplayer控制器三部分,分別通過(guò)觸摸,按鈕對(duì)其進(jìn)行相應(yīng)的控制操作,如圖2所示。
圖2 客戶端結(jié)構(gòu)圖
3.1 服務(wù)器程序
(1)圖形界面的初始化
圖形界面作為用戶與程序交互的窗口,是程序開發(fā)中一項(xiàng)不可或缺的重要工作,通過(guò)任何語(yǔ)言或者不同的工具實(shí)現(xiàn)圖形化的原理都很相像[3],即通過(guò)用戶點(diǎn)擊、輸入等操作傳遞信息,對(duì)用戶的操作作出響應(yīng),創(chuàng)建視圖不僅要有適當(dāng)?shù)脑?,還要進(jìn)行合理的布局。
(2)信息的監(jiān)聽
服務(wù)器端最重要的功能即時(shí)對(duì)客戶端發(fā)送來(lái)的信息進(jìn)行監(jiān)聽和處理,Android支持socket通信[4],TCP為了保證不發(fā)生丟包,就給每個(gè)包一個(gè)序號(hào),同時(shí)序號(hào)也保證了傳送到接收端實(shí)體的包的按序接收。然后接收端實(shí)體對(duì)已成功收到的包發(fā)回一個(gè)相應(yīng)的確認(rèn)(ACK);如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內(nèi)未收到確認(rèn),那么對(duì)應(yīng)的數(shù)據(jù)包就被假設(shè)為已丟失將會(huì)被進(jìn)行重傳。TCP用一個(gè)校驗(yàn)和函數(shù)來(lái)檢驗(yàn)數(shù)據(jù)是否有錯(cuò)誤;在發(fā)送和接收時(shí)都要計(jì)算校驗(yàn)和。這也使得TCP是一個(gè)繁瑣而且延遲十分大的傳輸方式,相比之下UDP則不需要繁瑣的驗(yàn)證流程,也不需要接收端作出回應(yīng),雖然可能會(huì)發(fā)生丟包現(xiàn)象但是對(duì)操作影響并不大,而與之相比帶來(lái)的是良好的實(shí)時(shí)性。因而在選擇傳輸方式時(shí)選擇了UDP。
(3)信息的處理
作為一款遠(yuǎn)程控制軟件,僅僅監(jiān)聽所得到的信息顯然是不夠的,最終的目的是要對(duì)用戶的操作做出響應(yīng),從而對(duì)計(jì)算機(jī)或其相應(yīng)的軟件進(jìn)行控制,已達(dá)到便利工作生活的目的。計(jì)算機(jī)最常用的輸入設(shè)備一般為鼠標(biāo)和鍵盤,所以絕大多數(shù)軟件在支持鼠標(biāo)控制的同時(shí),也支持鍵盤快捷鍵的控制。因此可以使用Robot類來(lái)模擬鼠標(biāo)和鍵盤,對(duì)系統(tǒng)下達(dá)指令,完成用戶的操作。服務(wù)器端連接界面如圖4所示。
圖4 服務(wù)器端連接界面圖
3.2 客戶端程序
(1)連接界面
根據(jù)需求分析以及設(shè)計(jì)的用戶界面確定所需要的類,在用戶輸入相應(yīng)信息之后需要觸發(fā)一個(gè)事件把該信息發(fā)送出去,這個(gè)時(shí)間就是Click事件,因此需要使用Button來(lái)完成該操作,然而用戶不一定了解輸入格式,所以用TextView標(biāo)簽把輸入格式和要求提供給用戶,即便如此也不能保證用戶一定會(huì)有合法的輸入。因?yàn)槎丝谔?hào)要求是整形,但是通過(guò)getText ()獲取到的是字符,如果用戶輸入空置,則在強(qiáng)制轉(zhuǎn)換的過(guò)程中必然會(huì)報(bào)錯(cuò)。為了防止上述狀況的發(fā)生,則需要在觸發(fā)事件時(shí)加上異常處理,并使用AlertDialog對(duì)用戶進(jìn)行提示。
(2)鼠標(biāo)控制界面
根據(jù)需求分析以及設(shè)計(jì)的鼠標(biāo)界面確定所需要的類,通過(guò)觸摸操作來(lái)模擬鼠標(biāo)操作的方式就是通OnTouchListener來(lái)監(jiān)聽用戶對(duì)手機(jī)屏幕的觸摸操作,分別截獲用戶手指開始觸摸以及觸摸結(jié)束時(shí)所處位置的坐標(biāo),然后將其間的橫縱坐標(biāo)的差值作為移動(dòng)的距離傳給服務(wù)器端。因?yàn)榘咽址旁谑謾C(jī)屏幕上即便不動(dòng)實(shí)際坐標(biāo)也會(huì)不斷變換,因此需要將捕獲到的新坐標(biāo)賦給第一次接觸時(shí)的坐標(biāo)fx和fy,否則就會(huì)產(chǎn)生只要手不離開鼠標(biāo)指針就會(huì)一直移動(dòng)的效果。
在鼠標(biāo)按鍵操作時(shí),為了給用戶反饋按鍵已生效的信息,應(yīng)該在按鈕被按下時(shí)改變圖標(biāo),直接使用setImageResource的話會(huì)導(dǎo)致圖層疊加,看起來(lái)會(huì)有兩個(gè)圖標(biāo)疊在一起的感覺(jué),所以要使用Handler.post()對(duì)UI進(jìn)行更新,以右鍵的點(diǎn)擊為例。
(3)幻燈片控制界面
根據(jù)需求分析以及設(shè)計(jì)的UI確定所需要的類,幻燈片在播放時(shí),主要的操作是翻頁(yè)以及全屏和退出全屏,較少用到其它操作,本頁(yè)面的主要目的是使用戶脫離有線設(shè)備的局限,使用簡(jiǎn)單明了的按鈕對(duì)自己的幻燈片進(jìn)行播放,如果需要其他操作可結(jié)合鼠標(biāo)控制一并完成,因此幻燈片控制界面只需要四個(gè)圖片按鈕即可完成。
(4)MediaPlayer控制界面
根據(jù)需求分析以及設(shè)計(jì)的控制界面確定所需要的類,對(duì)于MediaPlayer播放器的控制原理與幻燈片控制相同,也是通過(guò)OnClickListener對(duì)OnClick事件的監(jiān)聽完成信息由客戶端向服務(wù)器端傳送的過(guò)程,然后由Robot類模擬鍵盤快捷鍵的操作,從而實(shí)現(xiàn)通過(guò)手機(jī)對(duì)MediaPlayer播放器的控制,部分不同的地方是“播放”按鈕和“全屏”按鈕在按下后需要一次UI更新。
經(jīng)過(guò)需求分析、設(shè)計(jì)和編碼等階段的開發(fā)后,得到了源程序,開始進(jìn)入測(cè)試階段。經(jīng)過(guò)模擬器運(yùn)行測(cè)試運(yùn)行沒(méi)有什么問(wèn)題,但是因?yàn)橥幱谝慌_(tái)機(jī)器,使用同一個(gè)輸入設(shè)備,所以對(duì)于遙控功能的測(cè)試比較勉強(qiáng)。在真機(jī)上可以正常運(yùn)行,并能較好地實(shí)現(xiàn)預(yù)定的功能。
點(diǎn)擊菜單鍵彈出相應(yīng)選項(xiàng),或向左滑動(dòng)屏幕選擇Media-Player模式并實(shí)現(xiàn)跳轉(zhuǎn)。如圖5所示。跳轉(zhuǎn)成功后會(huì)有“吐司”彈出成功的提示,如圖6所示。
圖5 鼠標(biāo)模式運(yùn)行圖
圖6 MediaPlayer模式運(yùn)行
系統(tǒng)采用Client/Server結(jié)構(gòu)。實(shí)現(xiàn)由客戶端機(jī)器向個(gè)人計(jì)算機(jī)開啟的服務(wù)器從指定端口發(fā)送信息,由服務(wù)器端軟件接收、解析信息,并向個(gè)人計(jì)算機(jī)下達(dá)指令,完成用戶指定的操作。通過(guò)開發(fā)與測(cè)試,最終實(shí)現(xiàn)了通過(guò)Android手機(jī)等觸屏設(shè)備對(duì)個(gè)人電腦的幻燈片、MediaPlayer的直接控制以及通過(guò)觸屏模擬電腦觸摸板從而實(shí)現(xiàn)模擬鼠標(biāo)的操作功能。從而方便了用戶對(duì)個(gè)人電腦的操作,也可以作為鼠標(biāo)的備用或替代。
[1]Wuzhimin.Android,之父安德魯賓:生而Geek[J].程序員,2010.9.
[2]新浪科技.谷歌推開源移動(dòng)操作系統(tǒng)33家巨頭加入手機(jī)聯(lián)盟[OL].新浪科技,2007.
[3]王然.摩托羅拉欲借Android翻身:占據(jù)50%市場(chǎng)份額[N].經(jīng)濟(jì)觀察報(bào),2010.09.25.
[4]Markoff.John.I,Robot:The Man Behind the Google Phone[J].The New York Times,2007.11.04.
[5]Businessweek.Google Buys Android for Its MobileArsenal[OL].Businessweek.com,2005.
PPT Controller Based on Android
Li Shelei Sun Tianyu
(Polytechnical School,Sanya College,Sanya 572022,Hainan)
The design is to control the personal computer by Android mobile device,thus for the remote operation of software or desktop such as slides and MediaPlayer.It completes the MediaPlayer direct control,and the simulation of mouse operation through touch screen.It realizes to operate the slides in the computer through theAndroid mobile phones.
Android;control;client;server
李社蕾,女,河南清豐人,碩士,講師。研究方向:嵌入式開發(fā)、物聯(lián)網(wǎng)應(yīng)用。
三亞學(xué)院校級(jí)科研項(xiàng)目,項(xiàng)目編號(hào):XYDF12-2。