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