崔靜 鹿鳴曉

摘 要:本文主要結(jié)合電子白板的交互方式和如今移動(dòng)設(shè)備的普及設(shè)計(jì)了基于Android 手機(jī)和Wi-Fi Direct 的同步繪畫(huà)系統(tǒng)。我們?cè)赪i-Fi Direct 環(huán)境下建立了一個(gè)沒(méi)有中心的P2P 覆蓋網(wǎng)絡(luò)結(jié)構(gòu),可以讓用戶設(shè)備在沒(méi)有熱點(diǎn)的情況下,隨時(shí)隨地的建立連接和通信。我們的通知類消息模塊和共享數(shù)據(jù)采用C/S 模式來(lái)傳遞,而一對(duì)一傳遞數(shù)據(jù)采用P2P 模式,并結(jié)合UDP協(xié)議,實(shí)現(xiàn)了設(shè)備之間的通信。
關(guān)鍵詞:電子白板;Wi-Fi Direct;Android;P2P
1主要技術(shù)介紹
Wi-Fi Direct 是由Wi-Fi Alliance 提出并定義的新的技術(shù)。它是新興的Wi-Fi無(wú)線連接技術(shù),以Wi-Fi既有技術(shù)為基礎(chǔ)。提出的主要目的是為了創(chuàng)建一個(gè)基于傳統(tǒng)Wi-Fi 信號(hào)的P2P 形式的網(wǎng)絡(luò)而不需要Wi-Fi AP的存在。
Wi-Fi Direct 設(shè)備通過(guò)組建小組(以一對(duì)一或者一對(duì)多的拓?fù)湫问剑﹣?lái)建立連接,小組的工作形式和基礎(chǔ)設(shè)施BSS類似。由一部Wi-Fi Direct設(shè)備負(fù)責(zé)整個(gè)小組,包括控制哪部設(shè)備加入,小組何時(shí)啟動(dòng)和終止等。這種設(shè)備對(duì)于傳統(tǒng)客戶設(shè)備來(lái)說(shuō)就是一部接入點(diǎn),能夠提供基礎(chǔ)設(shè)施接入點(diǎn)所提供的部分服務(wù)。
2系統(tǒng)總體設(shè)計(jì)
2.1 Wi-Fi Direct 網(wǎng)絡(luò)的建立
我們?cè)赪i-Fi Direct 環(huán)境下建立了一個(gè)沒(méi)有中心的P2P 覆蓋網(wǎng)絡(luò)結(jié)構(gòu)。如圖1所示:
GO 為這個(gè)網(wǎng)絡(luò)的管理者,它給新加入的節(jié)點(diǎn)提供初始配置,并接收和發(fā)送一些通知和提醒消息。而且此節(jié)點(diǎn)是這個(gè)Wi-Fi Direct 網(wǎng)絡(luò)的創(chuàng)建者,負(fù)責(zé)整個(gè)網(wǎng)絡(luò)的啟動(dòng)和終止。
2.2 點(diǎn)的采集和保存
Android系統(tǒng)的視圖結(jié)構(gòu)的設(shè)計(jì)也采用了組合模式,即View作為所有圖形的基類,ViewGroup對(duì)View繼承擴(kuò)展為視圖容器類,由此就得到了視圖部分的基本結(jié)構(gòu)——樹(shù)形結(jié)構(gòu)。
我們首先自定義一個(gè)SketchPadView 來(lái)繼承View 視圖。我們就在自定義的視圖(類似白板,我們?cè)谝韵路Q為手機(jī)白板),繪制或者書(shū)寫(xiě)我們想要表達(dá)的東西,畫(huà)筆會(huì)記錄我們的繪制過(guò)程。我們?cè)诖耸謾C(jī)白板繪制圖形,這個(gè)白板就相當(dāng)于一個(gè)畫(huà)布,我們用View 的touch event (ACTION_DOWN,ACTION_MOVE,ACTION_UP)來(lái)記錄描述整個(gè)繪制過(guò)程。我們利用貝塞爾曲線來(lái)準(zhǔn)確繪制出我們的曲線。
由于我們需要在另外的手機(jī)同步顯示繪制過(guò)程,所以我們就要實(shí)施采集并傳輸我們的手指觸摸屏幕的坐標(biāo)點(diǎn)。點(diǎn)的采集我們要下面的公式表示:Point = P ( X , Y , Signal ) (1)
當(dāng)Signal = 0的時(shí)候,表示采集到的點(diǎn)為手剛觸摸屏幕的起始坐標(biāo)點(diǎn)。當(dāng)Signal = 1的時(shí)候,表示采集到的點(diǎn)為手在屏幕上滑動(dòng)的移動(dòng)坐標(biāo)點(diǎn)。當(dāng)Signal = 2的時(shí)候,表示采集到的點(diǎn)為手剛離開(kāi)屏幕的結(jié)束坐標(biāo)點(diǎn)。
3數(shù)據(jù)的發(fā)送與接收
3.1 按鍵控制類數(shù)據(jù)格式
在我們同步繪制開(kāi)始之前,我們首先要同步各個(gè)手機(jī)白板的畫(huà)布背景,畫(huà)筆顏色,畫(huà)筆寬度,畫(huà)筆類型(畫(huà)筆或者橡皮擦)等。開(kāi)始繪制過(guò)程中redo和undo 信息。以上這些信息我們統(tǒng)稱按鍵控制類數(shù)據(jù)。數(shù)據(jù)格式為如下表達(dá)式:Key = K(0,0,Singal ,BT ,CB ,BW ,BC ,RD ,UD );
BT表示畫(huà)筆類型,CB表示畫(huà)布背景,BW表示畫(huà)筆寬度,BC表示畫(huà)筆顏色,RD表示redo操作,UD表示UD操作。當(dāng)我們按鍵選擇各個(gè)按鈕的時(shí)候,就會(huì)發(fā)送相應(yīng)的指令,接收端根據(jù)指令類型來(lái)改變自己相應(yīng)的繪制格式。
3.2 發(fā)送與接收數(shù)據(jù)流程
每一個(gè)支持Wi-Fi Direct 的移動(dòng)設(shè)備都可以選擇當(dāng)GO,每一個(gè)加入此網(wǎng)絡(luò)的設(shè)備都存在于這個(gè)覆蓋網(wǎng)絡(luò)之中。本系統(tǒng)沒(méi)有真正意義上的服務(wù)器,每一個(gè)在Wi-Fi Direct 覆蓋網(wǎng)絡(luò)之中的移動(dòng)設(shè)備,都即可以提供繪圖數(shù)據(jù),也可以接受繪圖信息。
手機(jī)接入Wi-Fi Direct 網(wǎng)絡(luò)之中,然后打開(kāi)手機(jī)白板功能,這時(shí)候系統(tǒng)就相應(yīng)的開(kāi)啟倆個(gè)線程,一個(gè)接收線程和一個(gè)發(fā)送線程。當(dāng)此時(shí)畫(huà)板沒(méi)有接收信息,只要我們開(kāi)始在自己手機(jī)白板上繪制圖形,此時(shí)手機(jī)白板就把相應(yīng)的坐標(biāo)點(diǎn)和標(biāo)志位的信息打包通過(guò)組播向在這個(gè)組播地址里的每一個(gè)成員發(fā)送這些坐標(biāo)點(diǎn)集,其它手機(jī)根據(jù)得到的坐標(biāo)點(diǎn)集,通過(guò)解析程序把得到的坐標(biāo)點(diǎn)集,解析為可以讓繪圖程序識(shí)別的數(shù)據(jù)。然后通過(guò)繪圖程序在各自的手機(jī)白板上繪制此圖案。如果是一對(duì)一發(fā)送的話,就通過(guò)UDP的單播給指定的IP地址發(fā)送相應(yīng)的數(shù)據(jù)包來(lái)實(shí)現(xiàn)。
參考文獻(xiàn):
[1] 公磊,周聰.基于Android的移動(dòng)終端應(yīng)用程序開(kāi)發(fā)與研究[J].計(jì)算機(jī)與現(xiàn)代化,2008(08).
[2] 毛懷新.電梯與自動(dòng)扶梯技術(shù)檢驗(yàn)[M].北京:學(xué)苑出版社,2001.
[3] 羅偉.Android平臺(tái)的即時(shí)通訊系統(tǒng)的研究與實(shí)現(xiàn)[D].碩士學(xué)位論文.湖南師范大學(xué),2008.
[4] 孫衛(wèi)琴.Java網(wǎng)絡(luò)編程精解[M].北京:電子工業(yè)出版社,2007.
[5] Wi-Fi Alliance,“Wi-Fi P2P Technical Specification version 1.1”,Oct,2010.
作者簡(jiǎn)介:
崔靜(1990-),男,陜西榆林人,碩士,研究方向:計(jì)算機(jī)應(yīng)用技術(shù);鹿鳴曉,男,西北工業(yè)大學(xué)自動(dòng)化學(xué)院,研究方向:信息安全。