薛輝
摘 要:為了使演講者講解起來更加方便,提出了基于手機(jī)控制的電子教鞭系統(tǒng),分析了系統(tǒng)的需求,研究了系統(tǒng)的體系結(jié)構(gòu),設(shè)計了系統(tǒng)的功能模塊,通過socket進(jìn)行手機(jī)端與電腦端的通信,給出了通信的關(guān)鍵代碼,并實現(xiàn)了手機(jī)端和電腦端的功能。對比表明,該系統(tǒng)比電子教鞭功能更加強(qiáng)大,使用起來更加方便。
關(guān)鍵詞:手機(jī); 電子教鞭; 通信; 傳輸
中圖分類號: TG409
文獻(xiàn)標(biāo)志碼: A
Abstract:In order to make speaker more convenient to explain his speech, an electronic pointer system based on mobile phone control was proposed. The paper analyzed the requirements of the system, studied the structure, designed the functional modules, and realized the functions of the mobile phone terminal and the computer terminal. The communication among terminals was carried out through socket. The key code of communication was given. The comparison shows that the system is more powerful than the electronic pointer, and it is more convenient for use.
Key words:Mobile phone; Electronic pointer; Communication; Transmission
0 引言
電子教鞭已經(jīng)普遍使用于教師上課、會議演講、商家展演等場合,它可以擴(kuò)大講解者的活動范圍,能夠使講解更加具有親和力和感染力[1]。如今手機(jī)已經(jīng)使用于生活的方方面面,如果能用手機(jī)實現(xiàn)電子教鞭的功能,講解者就不用再購買和攜帶電子教鞭,工作更加方便[2]。經(jīng)檢索文獻(xiàn),目前已經(jīng)有一些這方面的研究,高帥等人提出了基于局域網(wǎng)的電子教鞭系統(tǒng)[3],王魁生等人提出了基于Agent的電子教鞭系統(tǒng)[4],劉濤等人提出了集存儲和控制于一體的手機(jī)教學(xué)助手[5],李旭東等人研究了兼具版權(quán)保護(hù)功能的電子教鞭系統(tǒng)[6],但目前對手機(jī)控制的電子教鞭系統(tǒng)的研究還不夠深入,便利性和實用性仍顯不足?;诖耍疚脑O(shè)計和實現(xiàn)了一款基于手機(jī)控制的電子教鞭系統(tǒng),現(xiàn)介紹如下:
1 系統(tǒng)的設(shè)計
1.1 系統(tǒng)需求分析
電子教鞭系統(tǒng)需要通過手機(jī)實現(xiàn)電子教鞭的功能,電子教鞭的功能主要包括以下四個方面:
(1)電子教鞭最主要的功能是控制PPT上下翻頁播放;
(2)電子教鞭還可以發(fā)射激光,在屏幕上形成一個顯著的提示點,提示講解者當(dāng)前解說的位置[7];
(3)有的電子教鞭還帶有畫筆功能,可以調(diào)用PPT自帶的畫筆圈出當(dāng)前講解的重點;
(4)還有些電子教鞭帶有U盤功能,方便講解者把PPT拷貝到電腦上。
除此之外,當(dāng)聽眾較多,講解的場地較大時,需要對講解者的聲音進(jìn)行擴(kuò)音,因此本系統(tǒng)在電子教鞭的基礎(chǔ)上還增加了擴(kuò)音功能。
1.2 系統(tǒng)的體系結(jié)構(gòu)
要用手機(jī)實現(xiàn)電子教鞭的功能,主要是通過手機(jī)連接電腦控制PPT的播放,本文設(shè)計的系統(tǒng)體系結(jié)構(gòu)如圖1所示,給手機(jī)上制作APP,用來發(fā)出控制命令,手機(jī)通過無線局域網(wǎng)把控制命令發(fā)送給電腦,在電腦上制作控制軟件,控制軟件把接收到的控制信息發(fā)送給PPT,從而控制PPT的播放。
1.3 系統(tǒng)的功能模塊
基于系統(tǒng)的需求分析,本系統(tǒng)設(shè)計的功能模塊如圖2所示。
系統(tǒng)分為手機(jī)端和電腦端,電腦端把本機(jī)的IP地址和端口號生成二維碼,用手機(jī)掃碼后進(jìn)行連接。手機(jī)端提供一個人機(jī)交互界面,界面上顯示控制PPT上下翻頁的按鈕、提示點功能的開關(guān)、通過手指劃動可以移動畫筆的區(qū)域、發(fā)送文件按鈕以及擴(kuò)音開關(guān)[8],操作這些控件后執(zhí)行相關(guān)的程序,并把控制命令、文件或聲音通過通信模塊發(fā)送給電腦端。電腦端接收到控制命令后,根據(jù)命令控制PPT的播放、顯示或消除提示點,以及繪制或擦除筆跡,接收到傳輸過來的文件后,可以直接打開,接收到傳輸過來的聲音后,通過連在電腦上的音箱進(jìn)行播放,形成擴(kuò)音效果。
2 系統(tǒng)的實現(xiàn)
2.1 手機(jī)端與電腦端的通信
在本系統(tǒng)的體系結(jié)構(gòu)中,手機(jī)端與電腦端的通信是系統(tǒng)實現(xiàn)的關(guān)鍵所在,包括如何通信和通信時傳輸什么信息。本系統(tǒng)手機(jī)端采用Android平臺[9],電腦端采用java制作,通過socket來實現(xiàn)手機(jī)端與電腦端的通信[10]。通信時通過發(fā)送字符形式的命令實現(xiàn)對PPT的控制,通過發(fā)送字節(jié)流實現(xiàn)文件或聲音的傳輸,并通過發(fā)送字符對文件或聲音的傳輸進(jìn)行控制。
2.1.1 Socket通信
在Socket通信中,把手機(jī)端看作客戶端,電腦端看作服務(wù)器端,如圖3所示。
連接時先在服務(wù)器端用ServerSocket類指定端口號并創(chuàng)建套接字,然后用accept()方法等待客戶端的連接,接著在客戶端連接socket,用getOutputStream()方法獲取輸出的字節(jié)流,然后用OutputStream類的flush()方法把字節(jié)流發(fā)送給服務(wù)器端,服務(wù)器端用getInputStream()方法接收到字節(jié)流之后,用read()方法把字符讀取出來,最后關(guān)閉socket連接[11]。由于在連接的過程中可能會出現(xiàn)
錯誤,所以要把代碼寫在try語句里。
服務(wù)器端的關(guān)鍵代碼如下:
public void server(){
try {
serverSocket = new ServerSocket(PORT);//綁定端口
while (true) {
clientSocket = serverSocket.accept();
//用accept()方法等待客戶端的連接
while (true) {//不斷讀取客戶端Socket的消息
byte[] b = new byte[];
int n = clientSocket.getInputStream().read(b);
String string = new String(b, 0, n);
if (string.equals("close")) {//客戶端通知關(guān)閉的標(biāo)識,中止死循環(huán),等待下個客戶端Socket
break;
}
System.out.println(string);
}
}
}
catch (IOException e) {e.printStackTrace();}
}
客戶端的關(guān)鍵代碼如下:
public void client() {
try {
socket = new Socket(HOST,PORT);
OutputStream outputStream = socket.getOutputStream();
outputStream.write(string.getBytes());
outputStream.flush();//將輸入的文字發(fā)給服務(wù)端
}
catch (IOException e) {e.printStackTrace();}
}
2.1.2 信息傳輸
系統(tǒng)信息傳輸流示意圖如圖4所示。
本系統(tǒng)傳輸?shù)男畔⒅饕▋煞N,一種是對PPT的控制信息,比如控制PPT翻頁、控制提示點是否顯示,控制畫筆是否繪制筆跡以及繪制時控制畫筆移動等。這種信息可以通過自定義字符來表示。本系統(tǒng)自定義的命令字符如表1所示。
另外一種傳輸?shù)男畔⑹俏募蛘呗曇?,也通過socket通信來實現(xiàn)。在socket通信里,可以采用字節(jié)流的方式用DataOutputStream傳送文件或聲音數(shù)據(jù)。傳輸時通過自定義命令字符控制文件或聲音的傳輸,用“file(filename,filesize)”表示發(fā)送的文件名和文件的大小,用“voiceon”表示傳輸聲音, “voiceoff”表示不傳輸聲音。命令字符、傳輸文件和傳輸聲音分別設(shè)置在不同的線程里,命令字符所在的線程控制文件和聲音傳輸?shù)木€程。
手機(jī)端上傳文件的關(guān)鍵代碼如下:
public void upload() {
try {
Socket socket = new Socket(HOST,filePORT);
OutputStream outputStream = socket.getOutputStream();
File file = new File(filePath);
if (file.exists()) {
FileInputStream fileInputStream = new FileInputStream(filePath);
DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
byte[] bytes = new byte[1024]; ?//每次傳輸1024字節(jié)
int length = 0;
while ((length = fileInputStream.read(bytes)) != -1) {
dataOutputStream.write(bytes, 0, length);
}
socket.shutdownOutput(); ?//告訴服務(wù)端,文件已傳輸完畢
}
} catch (IOException e) {e.printStackTrace();}
}
2.2 手機(jī)端功能的實現(xiàn)
控制PPT播放通過傳送命令字符來實現(xiàn)。手機(jī)端發(fā)出命令字符,電腦端接收到命令字符后根據(jù)命令字符控制PPT完成相應(yīng)的動作。手機(jī)端人機(jī)交互界面如圖5所示。
界面上的上下按鈕用來控制PPT上下翻頁,按鈕按下時觸發(fā)onClick事件,上按鈕發(fā)出“up”字符,下按鈕發(fā)出“down”字符,并通過Socket連接發(fā)送給電腦。提示點開關(guān)按鈕控制是否顯示提示點,當(dāng)打開該按鈕時,手機(jī)端發(fā)出“pointon”字符,當(dāng)關(guān)閉該按鈕時,手機(jī)端發(fā)出“pointoff”字符。畫筆開關(guān)按鈕控制在畫筆區(qū)域劃動手指時,是否在電腦屏幕上繪制筆跡[12],當(dāng)打開該按鈕時,手機(jī)端發(fā)出“penon”字符,當(dāng)關(guān)閉該按鈕時,手機(jī)端發(fā)出“penoff”字符。畫筆的筆跡繪制在提示點所在的位置,所以只有提示點顯示時該按鈕才可以打開。當(dāng)該按鈕打開時,手機(jī)端根據(jù)手指的移動發(fā)出位移字符“x,y”,其中x和y可以為正值或者負(fù)值,用來表示提示點移動的距離和方向。
擴(kuò)音開關(guān)按鈕用來控制是否錄制講解者的語音并發(fā)送。發(fā)送文件按鈕用來選擇文件,選擇好了之后通過Socket通信發(fā)送出去。
2.3 電腦端功能的實現(xiàn)
電腦端接收到手機(jī)端發(fā)送來的命令后,根據(jù)命令執(zhí)行不同的操作,下面分別講述:
2.3.1 上下翻頁功能的實現(xiàn)
播放PPT時,可以通過鍵盤上的Up和Down鍵實現(xiàn)幻燈片上下翻頁,所以,在本系統(tǒng)里,電腦端通過模擬鍵盤按下事件實現(xiàn)該功能。在Java里,可以使用Robot類的keyPress和keyRelease方法模擬鍵盤按下事件,從而控制PPT的播放。
2.3.2 提示點和畫筆功能的實現(xiàn)
在本系統(tǒng)里,通過PPT自帶的紅色指針來實現(xiàn)提示點的功能。PPT自帶的指針分為箭頭、筆和熒光筆三種,其中筆的指針是一個紅色的小圓點,按下ctrl+P快捷鍵可以把指針切換成筆,此時屏幕上顯示該紅色小圓點,通過鼠標(biāo)可以移動紅色小圓點的位置,實現(xiàn)提示點的功能,此時按下鼠標(biāo)左鍵可以用畫筆繪制,按下e鍵可以清除畫筆的筆跡。電腦端采用模擬按鍵事件和模擬鼠標(biāo)事件實現(xiàn)這些功能。模擬按鍵事件同2.3.1,使用Robot類的keyPress和keyRelease方法實現(xiàn),模擬鼠標(biāo)事件通過Robot類的mouseMove方法實現(xiàn),配合mousePress和mouseRelease方法模擬鼠標(biāo)左鍵按下和彈起,可以實現(xiàn)畫筆功能。
2.3.3 文件傳輸和擴(kuò)音功能的實現(xiàn)
把接收到的數(shù)據(jù)流寫入文件即可在電腦端實現(xiàn)文件接收功能,如果傳輸過來的是PPT文件,電腦端直接打開它,方便講解者使用,如果傳輸過來的數(shù)據(jù)流是音頻數(shù)據(jù),把傳輸過來的數(shù)據(jù)流通過電腦上的播放器播放即可實現(xiàn)擴(kuò)音功能。
3 本系統(tǒng)與電子教鞭對比
本系統(tǒng)與電子教鞭的對比如表2所示。
電子教鞭是用硬件構(gòu)成的[13],而本系統(tǒng)是用軟件構(gòu)成的,因此本系統(tǒng)的成本低于電子教鞭。一般的電子教鞭的傳輸距離只有10 m左右,功率大的也只有30 m左右,而本系統(tǒng)不受物理距離的限制,只要無線局域網(wǎng)覆蓋的地方都可以連接,傳輸距離遠(yuǎn)大于電子教鞭。由于電子教鞭沒有擴(kuò)音的功能,需要講解者單獨佩戴無線麥克風(fēng),很不方便,而手機(jī)上本來就有聲音輸入部件,本系統(tǒng)利用手機(jī)的聲音輸入部件和連接在電腦上的音箱方便的實現(xiàn)了擴(kuò)音功能。另外,電子教鞭需要單獨攜帶,而本系統(tǒng)安裝在手機(jī)上,不用單獨攜帶。從這些對比可以看出來,本系統(tǒng)比電子教鞭功能更加強(qiáng)大,使用起來更加方便。
4 總結(jié)
講解PPT時使用電子教鞭操作已經(jīng)非常普遍,本文設(shè)計了一款基于手機(jī)控制的電子教鞭系統(tǒng),通過手機(jī)實現(xiàn)電子教鞭的功能,使講解者可以快捷的拷貝PPT文件,靈活的控制PPT播放,并具有擴(kuò)音功能,使用起來非常方便。還可以給本系統(tǒng)增加講解者和聽眾的互動功能,進(jìn)一步活躍講解氣氛,增強(qiáng)講解的感染力。
參考文獻(xiàn)
[1] 夏炎.電子教鞭軟件在計算機(jī)實驗室管理中的應(yīng)用[J].電子測試,2013(22):154-155.
[2] 劉仁貴,黨建林,侯鎮(zhèn)鋒,等.基于Android手機(jī)的調(diào)光系統(tǒng)的設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2018,26(21):175-179.
[3] 高帥,范金龍,武建芳,等.基于局域網(wǎng)的Android電子教鞭設(shè)計[J].軟件導(dǎo)刊,2015,14(4):103-104.
[4] 王魁生,屈展.基于Agent的電子教鞭系統(tǒng)[J].計算機(jī)工程與應(yīng)用,2003(30):112-113.
[5] 劉濤,張玲.集存儲和控制于一體的手機(jī)教學(xué)助手[J].計算機(jī)系統(tǒng)應(yīng)用,2017,26(12):240-243.
[6] 李旭東.兼具版權(quán)保護(hù)功能的多媒體教學(xué)電子教鞭系統(tǒng)設(shè)計[J].中國現(xiàn)代教育裝備,2012(19):5-6.
[7] 劉鋼,陳笑怡,李丹立.基于USB攝像頭的激光筆輔助教學(xué)系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機(jī)應(yīng)用與軟件,2011,28(10):77-79.
[8] 張屹峰. 多媒體教室的自制激光筆交互系統(tǒng)[D].上海:上海交通大學(xué),2013.
[9] 殷濤,崔佳冬.基于Android軟件開發(fā)組件化研究[J].計算機(jī)應(yīng)用與軟件,2019,36(9):16-20.
[10] 周波. 基于Socket的Android公司固定資產(chǎn)管理系統(tǒng)的設(shè)計和實現(xiàn)[D].杭州:浙江理工大學(xué),2015.
[11] 胡晶晶.基于Socket的Android聊天室系統(tǒng)設(shè)計與實現(xiàn)[J].微處理機(jī),2014,35(4):50-51.
[12] 王志華. 激光筆交互技術(shù)研究[D].大連:大連理工大學(xué),2015.
[13] 張麒麟. 基于圖像處理的人機(jī)交互激光筆設(shè)計與實現(xiàn)[D].武漢:華中科技大學(xué),2016.
(收稿日期: 2019.11.05)