999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于JAVA技術的實時移動學習系統的研究與實現

2010-01-01 00:00:00丁慧東周學柳吳富章王艷波
現代教育技術 2010年4期

【摘要】移動學習在最近幾年得到了較大的發展。隨著3G網絡的迅速普及,無線網絡的帶寬已經可以滿足人們對移動流媒體的要求。文章論述了利用JAVA設計開發實時性較強的移動學習系統的方法和過程,闡述了其中的關鍵技術,并對系統進行了仿真。最后對本系統的設計和實現做出了總結。

【關鍵詞】JAVA;移動學習;實時流媒體;網絡連接

【中圖分類號】G40-057 【文獻標識碼】B 【論文編號】1009—8097(2010)04—0115—04

引言

隨著計算機技術、無線網絡通信技術和移動計算技術的快速發展,移動學習作為一種新型的學習模式引起了人們的廣泛關注,并成為教育技術及相關領域研究的新熱點。移動學習(Mobile Learning,簡稱M-Learning),是利用移動通信設備借助現有的無線通信網絡技術來獲取知識進行學習的一種現代學習方式[1]。這里,移動通信設備包括手機、PDA(個人數字助理)、筆記本電腦等具有無線通信功能的便攜式設備。日益成熟的3G網絡,其最高業務帶寬可達2Mbps。這種情況下,在移動學習中加入流媒體,可以讓移動學習更具發展潛力。

一 國內外移動學習現狀

移動教學與學習作為一種新的教學與學習模式,自2001年開始在世界范圍內已經備受關注,世界各地在此領域都做出了有益的探索,尤其以歐美一些國家為先,我國對移動學習的研究時間并不長也不成熟,但隨著近幾年網絡以及通信技術的迅猛發展它已取得了突飛猛進的成果,尤其伴隨著3G技術的應用以及目前手機功能的強大,越來越多的手機廠商都開始朝智能手機發展,這些硬件上的發展都為移動學習提供了有利的條件。

目前國內外移動學習主要有兩種模式:一種是基于MMS短信服務進行的移動學習。這種方式借助短信服務,學生與老師之間互相交流討論,學習者可以隨意自主地發送信息,進行學習;另一種較為流行的移動學習模式是基于WAP的網站服務方式。這種模式下,學生可以通過手機內嵌的瀏覽器,訪問下載服務器站點上的教學資源,進行學習。

“利用移動設備自主學習這種方式極大的調動了學習者的學習興趣,使青少年可以在一段時間內持續學習”[2]。面對目前傳統學習的一些弊端,移動學習的出現可以讓學生的學習做到隨時隨地,讓學生學習的興趣高漲。但目前兩種較常用的移動學習模式實時性和靈活性較差。針對這些特點,研究開發實時性高,靈活性好的學習系統就顯得很有必要了。

二 系統設計

1 設計思想

傳統的基于短信及WAP網頁形式的移動學習能達到一定的學習效果,但是短信學習的內容形式受限,利用文字交流學習居多;WAP網頁形式雖然可以瀏覽除文字以外的一些多媒體信息,如圖片等,但是基于資源下載的學習方式,做不到學生與教師之間的實時交流,互動性也較差。

基于上面兩種移動學習方式的不足,開發一個實時、靈活的移動學習系統的想法便應運而生。隨著手機用戶的增多和3G網絡的開通與普及,利用手機上網實現多媒體的傳輸基本已不再受限。本系統旨在利用J2ME及J2SE實現手機和PC機之間的通信,采用實時語音、課件、電子白板等方式進行移動教學。本系統實時教學實現模式為:系統分服務器端和客戶端,教師在服務器端播放事先做好的圖片課件,學生能在客戶端接收到服務器端的課件內容。同時,服務器端還具有電子白板功能,能夠把鼠標作為電子筆使用,用于教師對授課內容進行深入分析和講解;服務器端還實時采集教師的語音信息,利用網絡傳輸到手機客戶端,讓移動教學也能做到傳統教學模式下的聽課效果;學生還可以利用手機編輯信息發送到服務器,與教師進行實時交互。因此,服務器端要完成課件、語音、文本信息的實時傳輸,同時,對客戶的登錄請求給出響應。系統總體結構如圖1所示。系統開發包括服務器端的開發和手機客戶端的開發。系統主要任務是要實現手機與計算機之間的通信。JAVA語言在網絡通信方面提供了強大的功能以及豐富的類庫。因此,系統采用J2SE 及J2ME分別實現服務器和手機端的程序。

2 模塊設計

(1) 網絡連接

系統要實現如前所述的教學模式,即要完成課件、電子白板信息、語音、文字的實時傳輸,首先要與客戶端建立網絡連接。因為要使教學達到實時效果,就要保證課件、電子白板及語音信息的實時傳輸。在JAVA中,可通過HTTP、TCP等方式建立網絡連接,而TCP連接下的實時性最好,實現也很方便。J2SE中通過ServerSocket類實現了TCP連接的服務器套接字,通過其accept()方法,可以監聽到發出連接請求的用戶,獲取與用戶TCP連接的套接字;另一方面,在J2ME中可以通過Connector類的open方法創建一個SocketConnection,即創建一個TCP連接的套接字。利用套接字獲取InputStream流和OutputStream流后,雙方便可以進行通信。因為有多個用戶,在服務器端要利用向量保存用戶的輸入輸出流。

(2) 教學內容傳輸與接收

要實現多種教學資源的實時傳輸,可以為不同的資源傳輸實現獨立的服務器線程,當服務器要發送相應的教學信息時,就調用相應的線程進行傳輸。在系統中,drawpanel類為主要的服務器類,此類實現服務器的基本操作、電子白板的繪制以及電子白板服務器線程。同時,sendimage類、sendstring類來實現課件、文字信息的傳輸處理,因為要共享用戶信息(輸入輸出流等信息),這兩個設計成內部類。另一方面,在客戶端,相應的有三個線程來接收這些相應的信息:drawline類作為主要的客戶類,實現電子白板的繪制及接收電子白板的信息,另外receiveimage類和receivestring類實現課件及文字的接收。

語音方面,因J2ME中對實時流媒體支持不夠,不能直接用RTP、RTCP來直接傳送語音。這里,利用文獻[3]提供的思路,在服務器端利用RecordThread類及AudioRec類捕獲并錄制教師的語音,并且將錄制的語音放入HTTP服務器中。在客戶方面,利用HttpConnection類與服務器建立HTTP連接后,下載里面的音頻文件,再利用javax.microedition.media軟件包提供的Player類對下載的音頻文件進行播放,達到實時語音的目的。

(3) 用戶管理

系統要實現移動學習,首先要做的是用戶的管理。用戶借助于合法的用戶名及密碼進行登錄請求,在服務器端開啟一個后臺線程,監聽用戶的登錄請求,同時通過查詢后臺數據庫判斷是否為合法用戶,若為合法用戶,則將其添加到服務器中的客戶列表中。

三 關鍵技術

在實現整個系統的過程中,關鍵的地方就是要解決實時圖像和聲音等多媒體信息的傳輸。在多媒體方面,JAVA為處理多媒體提供了一個專門的編程工具JMF(JAVA Media Frame),利用JMF可以實現對多媒體數據的捕獲、處理、傳輸。利用JMF中的軟件包還可以實現RTP、RTCP等協議,對實時流媒體提供了支持。但是目前市場上絕大多數支持Java的手機中并未提供JMF的軟件包。因此,必須另選其它方法來實現流媒體的實時傳輸。

1 實時圖像處理與傳輸

圖像數據包括課件圖片數據和電子白板數據。課件圖片的傳輸主要由課件圖片服務器線程完成。考慮到目前市場上各種手機的屏幕大小現在并未統一,用戶在登錄時,需將用戶屏幕的大小保存到服務器端。在J2ME中,利用Form類或者Canvas類的getWidth()、getHeight()方法可以獲取當前屏幕的大小。服務器根據用戶屏幕的大小借助于JAVA豐富的圖像處理類(BufferedImage、JPEGImageEncoder等)將圖像經縮小、編碼等處理過后再以像素數組的方式發送給各個客戶。在客戶端,利用Image類的createImage()方法,把接收到的像素數組數據為參數,即可構造出要顯示的圖像。借用此思路既可以減小網絡的傳輸量,還可以減輕客戶端的負擔。

為了節約帶寬資源,服務器應盡量減少直接發送圖片數據的次數。考慮到電子白板信息只是一些畫筆位置、大小、顏色等信息,且發送較為頻繁,為此,電子白板信息的發送應與課件圖片的發送分開,而另開啟一個電子白板服務器線程與客戶進行信息傳輸。可將電子白板信息封裝為:

class mypoint

{

publicintx;//x坐標

Publicinty;//y坐標

publicColorpenclr; //畫筆顏色

publicColorfontclr;//字體顏色

publicintpen; //畫筆粗細

publicintisdraw;//是否在畫的標志

public int idnum;//客戶端的ID

public int drawMode;//當前畫筆模式

public int multiple;/*到客戶屏幕應該縮小的倍數*/

}

這樣,只需通過輸入輸出流的readInt()、writeInt()方法,就可以將這些少量的信息傳送給各個客戶,而不需再傳輸一個像素數組的信息。

為保證實時正確地傳輸課件以及電子白板信息,這里采用了TCP連接,直接使用套接字獲取輸入輸出流。

在手機端,為了防止屏幕切換時發生閃爍,采用了雙緩沖技術,將電子白板和課件圖像繪制到后臺的一張與屏幕大小相同的圖片screen_image上后,再在paint()方法中利用Graphics類將這張圖片screen_image繪制到屏幕上。這樣就避免了因繪制屏幕而發生的閃爍。

2 實時聲音處理與傳輸

要實現實時語音的傳輸,首先要在服務器端實現實時語音的采集和錄制。javax.sound.sampled軟件包中提供了一些對音頻數據進行處理的類。在本系統中,AudioRec類利用這些語音處理的類,實現了對音頻的采集并錄制成wave文件。現在關鍵的問題是要利用這些錄制的wave文件實現實時音頻的傳輸。

因為目前大部分支持JAVA的手機并未提供JMF軟件包,所以應用RTP、RTCP等實時流媒體傳輸協議傳輸實時音頻應該會比較困難。早期流媒體的實現,是利用HTTP連接來傳輸多媒體文件,下載到本地內存中再進行播放。而另一方面,J2ME的MMAPI(Mobile Media API)規范中也提供了一些實現多媒體規范的API,javax.microedition.media軟件包中包括了實現這些API的類。Player實現了對各種格式的音頻、視頻文件的播放。利用Manager類的createPlayer(InputStream stream,String type)方法可以創建一個Player對象。其中stream是獲取的資源的輸入流,type為媒體的格式。由文獻[4]可知媒體格式代表的意義為:

audio/midiMIDI文件

audio/sp-midi可擴展多和弦MIDI

audio/x-wav WAVPCM采樣音頻

image/gifGIF動畫

video/mpeg MPEG視頻

這樣,在客戶端只需利用HttpConnection與計算機服務器建立HTTP連接,獲取當前錄制的音頻文件的輸入流:

HttpConnection con = (HttpConnection)Connector.open(fileURL);

/*建立HTTP連接,fileURL即為要服務器音頻文件的URL*/

con.setRequestMethod (HttpConnection.GET);/*設置HTTP為讀取信息*/

return (InputStream)conn.openInputStream(); /*獲得輸入流*/

利用此輸入流,就可以創建Player對象,實現實時音頻的播放:

player=Manager.createPlayer(is,”audio/x-wav”);

/*is獲取的輸入流,播放的音頻文件格式為wave音頻*/

要實現實時錄制的音頻能在客戶端實時播放,不可能在服務器端將采集的聲音錄制成一個文件。借助文獻[3]提供的思路,可以在服務器端將音頻錄制成多個文件,且每個文件只錄制500ms到1000ms之間。并且循環錄制這幾個文件。在本系統的RecordThread類中就利用AudioRec類循環錄制5個wave文件:

while(isstop==1)

{

try{

AudioRec.AudioRecorder(\"E:\\\\Web網頁設計\\\\\"+file[i]);

Thread.sleep(1000);//錄制1000ms

i=(i+1)%5;//循環錄制

AudioRec.stopRecording();

}

catch(Exception ex)

{//異常處理}

}

每個客戶在登錄時都先下載第一個音頻文件播放,播放完后再下載下一個文件。利用這種思路,可以以接近實時的效果進行音頻播放,其最大時延為N*len,其中N為循環錄制文件的個數,len為單個文件的長度(時間上的長度)。Player對象有五種狀態:UNREALIZED、REALIZED、PREFETCHED、STARTED、CLOSED,各狀態的轉換如圖2。因為Player對象播放的數據是實時下載,當前一段音頻文件播放完畢后,再重新下載文件繼續播放。如果下載的速度太慢,音頻文件進行切換時,中間就會出現明顯的延時。在這個問題上,文獻[3]提出了一種思路,其做法如下:運用兩個Player對象,分別由兩個線程控制。其中一個Player播放音頻文件的同時,另一個Player利用HTTP連接下載接下來要播放的文件。這樣兩個Player交替播放、下載,就可以明顯改善延時缺點。依據其思路,部分實現代碼如下:

String sRequestURL=\"http://\"+ipstr+

\"/wfztest/file\"+1+\".wav\" ;

//構造初始的第一個音頻文件的URL

HttpConnection conn =

(HttpConnection)Connector.open(sRequestURL);

conn.setRequestMethod(HttpConnection.GET); is=(InputStream)conn.openInputStream();

//通過HTTP連接,獲取輸入流

if(is!=1)

{

//獲得輸入流創建播放器

player[0]=Manager.createPlayer(is,

\"audio/X-wav\");

if(player[0]!=1)

{

player[0].realize(); player[0].prefetch();

player[0].start();

}

}

/*循環做以下工作:一個Player播放同時,另一個下載文件*/

while(true){

i=(i+1)%5;//五個聲音文件來回的倒換

(new CommandResources(i,j)).start();//下載音頻線程

while(player[j].getDuration()==-1)

{;}

sleeptime=player[j].getDuration()/1000;

Thread.sleep(sleeptime);

/*前Player播放完畢后開始Player的播放*/

player[(j+1)%2].start();/*準備好的player開始播放*/

player[j].stop();

player[j].deallocate();/*已經播放完的player釋放資源*/

player[j].close();

j=(j+1)%2;

System.gc();//系統盡快回收內存

System.gc();

}

四 實例仿真

本系統在上述設計下,服務器端和客戶端分別利用Jcreator IDE及JDK1.5.0、eclipse IDE及WTK2.5.1編程實現了系統程序,服務器配置IIS服務器及Access數據庫服務,利用WTK模擬器進行模擬,運行效果如圖所示,圖3為客戶登錄界面,圖4為客戶端聊天界面,圖5為客戶端教學時播放課件的界面,圖6為服務器端教學時播放課件的界面。

五 結束語

本系統應用J2SE和J2ME分別實現系統的服務器端程序和客戶端程序。較成功地將設計思路得以實現。開發過程中主要應用了WTK模擬器進行調試與運行,并且在motorolaE680i真機利用GPRS網絡進行了測試,測試過程中聲音及較大圖片的傳輸效果不太理想,有待于日后研究與解決。隨著J2ME在手機上日益廣泛以及3G網絡的到來,移動學習將不僅僅只是一個概念,而會成為一項實用技術和產品在今后逐漸普及。本系統在這一方向提供了較好的思路,是一個具有一定創新的應用。

參考文獻

[1] 劉建設,李青,劉金梅.移動學習研究現狀綜述[J].電化教育研究,2007,(7):21-25.

[2] 高敏,吳介軍,姚紅靜.基于手機的M-Learning系統研究與設計[J].現代教育技術,2008,18(8):93-96.

[3] 鄭昀.J2ME手機流媒體之習作[EB/OL].

[4] 胡虛懷,楊志和,李煥.J2ME移動設備程序設計[M].北京:清華大學出版社,2005:238-255.

[5] 唐自仰,劉瑾,張克君.基于J2ME/Servlet的手機聊天系統[J].計算機工程,2009,35(10):262-263.

[6] 孫耀庭.移動學習和移動服務的實踐與研究[J].中國遠程教育,2008,(8):69-70.

主站蜘蛛池模板: 精品午夜国产福利观看| jizz在线观看| 亚洲开心婷婷中文字幕| 老司机午夜精品网站在线观看| 麻豆精品视频在线原创| 国产成人喷潮在线观看| 人妻精品久久无码区| 久久国产精品麻豆系列| 亚洲国产AV无码综合原创| 午夜福利亚洲精品| 成人噜噜噜视频在线观看| 激情综合婷婷丁香五月尤物| 激情无码字幕综合| 91丨九色丨首页在线播放| 毛片在线播放a| 一区二区影院| 国产在线第二页| 91亚洲免费视频| 欧美精品伊人久久| 高清无码一本到东京热| 久久人午夜亚洲精品无码区| 国产欧美日韩精品综合在线| 97久久精品人人做人人爽| 国产18在线播放| 国产精品网拍在线| 免费一级毛片在线播放傲雪网| 国产精品手机在线观看你懂的| 九色视频最新网址| 永久免费精品视频| 99久久成人国产精品免费| 中文字幕在线日韩91| 亚洲无码四虎黄色网站| 欧美激情综合一区二区| 久久香蕉国产线看观看式| 97免费在线观看视频| 伊人久久大香线蕉成人综合网| 国产永久在线视频| 欧美在线中文字幕| 精品午夜国产福利观看| 国产精品一老牛影视频| 国产精品尤物在线| 精品国产一区二区三区在线观看| 58av国产精品| 天堂亚洲网| 福利在线免费视频| 91精品国产福利| 狠狠色综合久久狠狠色综合| 欧美性精品不卡在线观看| 亚洲欧美成人综合| 全午夜免费一级毛片| 99精品一区二区免费视频| 亚洲成人77777| 欧美h在线观看| 国产成人无码播放| 白浆视频在线观看| 色哟哟国产精品一区二区| 伊人久久影视| 亚洲妓女综合网995久久| 国产精品区视频中文字幕| 中文字幕欧美日韩| 国产精品九九视频| 亚洲精品波多野结衣| 青青青国产视频| 天天躁日日躁狠狠躁中文字幕| 在线亚洲精品福利网址导航| 婷婷五月在线| 欧美高清三区| 成人亚洲视频| 一级毛片在线播放| 欧美A级V片在线观看| 亚洲午夜福利精品无码不卡| 免费人成视网站在线不卡| 国产精品七七在线播放| 亚洲人成网站在线播放2019| 国产精品视频猛进猛出| 国产精品免费福利久久播放| 538精品在线观看| 色有码无码视频| 国产精品亚欧美一区二区三区| 久久久噜噜噜| 久久精品这里只有精99品| 在线观看热码亚洲av每日更新|