摘 要: 提出了一種基于Android平臺(tái)的教學(xué)資源庫(kù)移動(dòng)客戶端的解決方法,分析了該系統(tǒng)的架構(gòu)和主要模塊,并以本校的教學(xué)資源庫(kù)為例,具體實(shí)現(xiàn)了該系統(tǒng),其對(duì)移動(dòng)校園應(yīng)用以及移動(dòng)學(xué)習(xí)系統(tǒng)的研究具有一定的參考價(jià)值。
關(guān)鍵詞: Android;資源庫(kù);移動(dòng)客戶端;移動(dòng)校園;移動(dòng)學(xué)習(xí)
0 引言
目前,隨著數(shù)字化校園工作的不斷深入,各校都在積極研究數(shù)字化校園的各項(xiàng)應(yīng)用,其中教學(xué)資源庫(kù)的建設(shè)是一個(gè)重點(diǎn)。已有的資源庫(kù)應(yīng)用一般都采用B/S架構(gòu),各類資源都放置在服務(wù)器上,在PC端通過(guò)瀏覽器實(shí)現(xiàn)用戶的接入。用這種方式在移動(dòng)設(shè)備上進(jìn)行接入時(shí)會(huì)存在一些弊端,如操作繁瑣、可交互性差、數(shù)據(jù)流量大等。這些情況以及移動(dòng)智能設(shè)備的大量普及,使得開(kāi)發(fā)教學(xué)資源庫(kù)移動(dòng)客戶端系統(tǒng)變得非常迫切。本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Android平臺(tái)的教學(xué)資源庫(kù)移動(dòng)客戶端系統(tǒng),用戶通過(guò)該系統(tǒng)可以在Android智能終端上實(shí)現(xiàn)課程資源學(xué)習(xí)、接收新資源信息、視頻點(diǎn)播、在線練習(xí)、用戶交流等功能。
1 系統(tǒng)的架構(gòu)設(shè)計(jì)
本系統(tǒng)采用C/S架構(gòu)設(shè)計(jì),重點(diǎn)在于移動(dòng)客戶端的開(kāi)發(fā),學(xué)校的服務(wù)器端采用的是.NET+IIS+SQLServer的配置,考慮到安全性及數(shù)據(jù)量的問(wèn)題,在遠(yuǎn)程數(shù)據(jù)庫(kù)的連接上,Android客戶端通過(guò)WebService這個(gè)橋梁來(lái)訪問(wèn)SQLServer,獲得相應(yīng)的XML格式數(shù)據(jù),并通過(guò)Android自帶的PULL解析器解析出相關(guān)數(shù)據(jù)顯示在客戶端UI界面中。
客戶端模塊在功能上主要分為用戶登錄、我的通知、在線學(xué)習(xí)、視頻點(diǎn)播、在線練習(xí)、資料下載、師生互動(dòng)、用戶交流和密碼設(shè)置等。為了程序的簡(jiǎn)潔,移動(dòng)客戶端未設(shè)置教學(xué)資源庫(kù)的管理功能,管理員賬號(hào)只能通過(guò)PC端登錄實(shí)現(xiàn)管理功能。客戶端在業(yè)務(wù)邏輯的實(shí)現(xiàn)上主要由以下幾個(gè)類構(gòu)成:WebService操作數(shù)據(jù)庫(kù)類DBOperation、Android連接WebService類HttpConnSoap、XML數(shù)據(jù)解析類XMLParser類以及相關(guān)的界面類UserLogin、CourseView等。
本移動(dòng)客戶端的基本架構(gòu)如圖1所示。
2 系統(tǒng)主要模塊的實(shí)現(xiàn)
2.1 服務(wù)器端接口ResourceWebservice
一般的C/S架構(gòu)程序在數(shù)據(jù)庫(kù)連接上都采用直接連接,對(duì)于移動(dòng)客戶端的開(kāi)發(fā)帶來(lái)的問(wèn)題是數(shù)據(jù)流量大、安全性不好等問(wèn)題。本系統(tǒng)在數(shù)據(jù)庫(kù)連接及操作上通過(guò)自定義的服務(wù)器端接口程序ResourceWebservice來(lái)操作教學(xué)資源庫(kù)SQLServer數(shù)據(jù)庫(kù)Resource,獲得數(shù)據(jù)并轉(zhuǎn)換成XML格式。由于采用了WebService方式來(lái)進(jìn)行中轉(zhuǎn)操作,Android客戶端中所有的數(shù)據(jù)庫(kù)操作都必須在ResourceWebService中寫(xiě)成相應(yīng)的接口函數(shù),ResourceWebService中獲得指定資源學(xué)習(xí)內(nèi)容的接口函數(shù)示例如下:
[WebMethod(Description="獲取指定資源學(xué)習(xí)內(nèi)容")]
public string[]selectStudyInfo(int courseid,int contentid)
{
return dbOperation.selectStudyInfo(courseid,contentid).ToArray();
}
這里DBOperation是一個(gè)操作數(shù)據(jù)庫(kù)的類,所有對(duì)教學(xué)資源庫(kù)的數(shù)據(jù)庫(kù)操作都寫(xiě)在這個(gè)類中,其中包括在線學(xué)習(xí)模塊的查詢接口、師生互動(dòng)的更新接口等,使用時(shí)實(shí)例化DBOperation類,然后即可直接調(diào)用。
2.2 Android調(diào)用ResourceWebService
服務(wù)器端的WebService接口函數(shù)配置好之后,在Android中就可以通過(guò)調(diào)用它們達(dá)到操作數(shù)據(jù)庫(kù)的目的,但Android系統(tǒng)自帶的SDK中并沒(méi)有提供調(diào)用WebService的類庫(kù),本系統(tǒng)在開(kāi)發(fā)過(guò)程中使用了適合手機(jī)客戶端的KSOAP2,并設(shè)計(jì)了較為通用的getWebService方法,將調(diào)用得到的返回?cái)?shù)據(jù)先存放在數(shù)據(jù)流中,然后進(jìn)行XML解析。getWebService方法設(shè)計(jì)如下:
public InputStream getWebService(String methodName,ArrayList<String> ParamList,ArrayList<String> ParValueList);
其中methodName是調(diào)用的接口函數(shù)名稱,ParamList是調(diào)用的參數(shù)列表,ParValueList是參數(shù)值的列表。以調(diào)用“獲取指定資源學(xué)習(xí)內(nèi)容”接口為例:
String methodName="selectStudyInfo";
ParamList.add("courseid");ParamList.add("contentid");
ParValueList.add("010");ParValueList.add("005");
InputStream inputStream=ResourceWebService.getWebService(methodName,ParamList,ParValueList);
2.3 XML數(shù)據(jù)解析類XMLParser
當(dāng)?shù)玫椒祷財(cái)?shù)據(jù)的數(shù)據(jù)流后,需要進(jìn)行XML格式數(shù)據(jù)的解析,本系統(tǒng)使用Android自帶的PULL解析器,解析速度快,簡(jiǎn)單易用,非常適合手機(jī)、平板電腦等內(nèi)存有限的小型移動(dòng)設(shè)備。XMLParser類的解析過(guò)程為設(shè)定開(kāi)始元素和結(jié)束元素,當(dāng)某個(gè)元素開(kāi)始時(shí),調(diào)用parser.nextText()方法從數(shù)據(jù)流中提取所有數(shù)據(jù),當(dāng)解釋到一個(gè)文檔結(jié)束時(shí),自動(dòng)生成EndDocument事件。主要代碼如下:
public ArrayList<StudyInfo>paraseStudyInfo(InputStream inputStream){
XmlPullParser parser=Xml.newPullParser();
int eventType = parser.getEventType();
while(eventType!=XmlPullParser.END_DOCUMENT)
{……
eventType=parser.next();
}
}
2.4 消息推送模塊
該模塊使用了一個(gè)開(kāi)源項(xiàng)目androiddpn,通過(guò)XMPP協(xié)議實(shí)現(xiàn)了客戶端與服務(wù)器端的長(zhǎng)久連接,將客戶端源代碼包androidpn-client-0.5.0.zip導(dǎo)入到移動(dòng)客戶端項(xiàng)目后,設(shè)置raw/androidpn.properties文件,配置客戶端的apiKey、xmppHost、xmppPort這三個(gè)參數(shù)就可以接收來(lái)自服務(wù)器端的推送消息。在服務(wù)器端,只需運(yùn)行服務(wù)器端源代碼包androidpn-server-0.5.0-bin.zip中的run.bat,就可以直接搭建好消息推送服務(wù)。
當(dāng)資源庫(kù)管理者更新了新的資源,如課程教師更新了課程內(nèi)容后,可以通過(guò)瀏覽器打開(kāi)Android Push Notification Admin Consle頁(yè)面,將更新消息手動(dòng)推送到設(shè)定了該課程的用戶手機(jī)上,消息會(huì)直接顯示在用戶屏幕上,也可以通過(guò)“我的通知”模塊進(jìn)行查看。
2.5 視頻點(diǎn)播模塊
視頻資源是教學(xué)資源庫(kù)建設(shè)的重點(diǎn),用戶通過(guò)遠(yuǎn)程視頻點(diǎn)播可以再現(xiàn)教師課程教學(xué)的重點(diǎn),教學(xué)資源庫(kù)中所有的視頻資源均采用流媒體格式存儲(chǔ)在服務(wù)器端,本系統(tǒng)移動(dòng)客戶端未開(kāi)發(fā)專用的視頻播放器,而是通過(guò)流媒體文件的URL地址調(diào)用本地應(yīng)用來(lái)進(jìn)行視頻資源的點(diǎn)播。其主要代碼如下:
Intent svideo=new Intent();
svideo.setAction(Intent.ACTION_VIEW);
svideo.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Uri uri=Uri.parse(url);//這里url表示流媒體文件在服務(wù)器端的地址
svideo.setDataAndType(uri,"video/*");
startActivity(svideo);
3 系統(tǒng)的運(yùn)行環(huán)境及運(yùn)行實(shí)例展示
教學(xué)資源庫(kù)服務(wù)器端配置為.NET4.0+IIS7.0+SQLServer2005,移動(dòng)客戶端Android運(yùn)行環(huán)境要求在2.3.3版本及以上,客戶端和服務(wù)器端通過(guò)WebService中轉(zhuǎn)連接。本系統(tǒng)在Android模擬器及Android真機(jī)中信U793、聯(lián)想A850、華為C8816等一般配置機(jī)型上均可以流暢運(yùn)行,能隨時(shí)隨地通過(guò)移動(dòng)終端獲取教學(xué)資源庫(kù)中的各類信息,進(jìn)行課程內(nèi)容在線學(xué)習(xí)、師生互動(dòng)、視頻點(diǎn)播、用戶交流等操作,運(yùn)行效果如圖2所示。
4 結(jié)論
移動(dòng)設(shè)備的普及使得移動(dòng)應(yīng)用的開(kāi)發(fā)成為一種趨勢(shì),本文設(shè)計(jì)并實(shí)現(xiàn)了基于Android平臺(tái)的教學(xué)資源庫(kù)移動(dòng)客戶端系統(tǒng),并作為江蘇省職業(yè)技術(shù)教育學(xué)會(huì)研究課題“Web2.0平臺(tái)下軟件技術(shù)專業(yè)教學(xué)資源信息化的實(shí)踐研究”的移動(dòng)端研究?jī)?nèi)容已在學(xué)生中進(jìn)行了初步試用,極大地提高了學(xué)生的學(xué)習(xí)興趣,同時(shí)也出現(xiàn)了如師生互動(dòng)、消息推送等方面的一些不足,隨著新技術(shù)的不斷發(fā)展這些不足將得到改進(jìn),以推動(dòng)移動(dòng)應(yīng)用開(kāi)發(fā)的不斷前進(jìn)。
參考文獻(xiàn)
[1] 陳文,郭依正.深入理解Android網(wǎng)絡(luò)編程[M].北京:機(jī)械工業(yè)出版社,2013.
[2] 余志龍.Google Android SDK開(kāi)發(fā)范例大全[M].北京:人民郵電出版社,2011.
[3] 初雅莉,陳昌穩(wěn).基于Android的智慧校園手機(jī)系統(tǒng)[J].微型機(jī)與應(yīng)用,2013,32(15):15-17.
[4] 仲偉,吳晉.基于XMPP協(xié)議的校園實(shí)時(shí)推送系統(tǒng)的研究[J].武漢大學(xué)學(xué)報(bào)(理學(xué)版),2012,S1:305-308.
[5] 鄭潔瓊,陳澤宇.3G網(wǎng)絡(luò)下移動(dòng)學(xué)習(xí)的探索與實(shí)踐[J].開(kāi)發(fā)教育研究,2012(1):159-162.
[6] 呂偉.基于Android的移動(dòng)學(xué)習(xí)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].南京:南京師范大學(xué),2013.