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

北京大學(xué)移動課堂設(shè)計與實(shí)現(xiàn)*

2017-06-05 15:04:52楊公義王勝清
中國教育信息化 2017年7期
關(guān)鍵詞:課程課堂

楊公義,王勝清

(北京大學(xué),北京 100871)

北京大學(xué)移動課堂設(shè)計與實(shí)現(xiàn)*

楊公義,王勝清

(北京大學(xué),北京 100871)

基于Flex+Spring+BlazeDS技術(shù)開發(fā)的北大移動課堂能通過rtmp流安全高效地獲取遠(yuǎn)程服務(wù)器端的直播流和點(diǎn)播流。功能模塊包括院系列表、統(tǒng)一身份認(rèn)證、院系的課程列表、課程的所有視頻列表、視頻點(diǎn)播、直播教室的列表、教室直播、意見建議。在服務(wù)器端,通過J2EE應(yīng)用的部署與配置把Spring管理的Bean通過BlazeDS發(fā)布成服務(wù)。在客戶端,通過Flash Builder搭建Flex開發(fā)環(huán)境,并通過DCD技術(shù)調(diào)用服務(wù)器端BlazeDS遠(yuǎn)程服務(wù)。以開發(fā)“院系列表”為例介紹了Flex調(diào)用服務(wù)器端BlazeDS服務(wù)的機(jī)制。北大移動課堂實(shí)現(xiàn)了讓北大師生通過安卓手機(jī)點(diǎn)播北京大學(xué)視頻資源庫的教學(xué)視頻,在線觀看北大網(wǎng)絡(luò)教育電視臺15個教室的教學(xué)實(shí)況,并與學(xué)校的統(tǒng)一認(rèn)證進(jìn)行了整合。

Flex;Spring BlazeDS集成;Android App開發(fā);移動課堂

一、引言

移動課堂App是移動教育的重要工具,為了讓北大師生用Google Android手機(jī)或移動終端點(diǎn)播北大視頻資源庫的教學(xué)視頻,在線觀看北大網(wǎng)絡(luò)教育電視臺15個教室的教學(xué)實(shí)況,北大自主研發(fā)了移動課堂。為保護(hù)版權(quán),視頻資源庫和網(wǎng)絡(luò)教育電視臺均采用了Adobe公司的Flash流媒體服務(wù)器。從技術(shù)一致性考慮,北大移動課堂的開發(fā)采用了Adobe公司的Flex語言,因?yàn)橛肍lex語言能很好地調(diào)用基于rtmp協(xié)議的Flash流媒體服務(wù)器中的直播流或點(diǎn)播流。

二、北京大學(xué)移動課堂的界面與功能設(shè)計[1]

北大移動課堂App的安裝,在Android手機(jī)上,用瀏覽器訪問http://www.metc.pku.edu.cn/xiazai/course.apk下載并安裝。如果手機(jī)上沒有Adobe air運(yùn)行環(huán)境,需要訪問http://www.metc.pku.edu.cn/xiazai/air.apk下載并安裝。course.apk運(yùn)行之后,首頁如圖1所示。(為了抓圖的方便,本文圖片是來自FlashBuilder的手機(jī)模擬器,在手機(jī)上實(shí)際運(yùn)行的效果會更美觀)北大移動課堂與計算中心的統(tǒng)一認(rèn)證進(jìn)行了對接,經(jīng)過認(rèn)證的用戶可以隨時隨地點(diǎn)播課程錄像或看教室直播。用戶在圖1中單擊任一院系名稱或者在圖6中單擊任一教室名稱,會進(jìn)入圖2要求通過計算中心的統(tǒng)一認(rèn)證。“北大移動課堂”的功能主要包括直播和點(diǎn)播。點(diǎn)播:首頁(圖1)單擊“院系課堂”進(jìn)入“院系列表”,顯示所有院系的院系名稱、課程門數(shù)。系統(tǒng)實(shí)現(xiàn)了按“院系名稱”模糊查詢的功能,查詢結(jié)果以“課程數(shù)量”降序排列。圖1中單擊任一院系名稱,進(jìn)入該院系的課程列表如圖3所示,可瀏覽該院系的所有課程,并能按“課程名稱”模糊查詢。圖3中單擊任一課程名稱,進(jìn)入該課程的“視頻列表”,如圖4所示,圖4中單擊任意一個視頻,可以全屏播放該視頻,如圖5所示。播放方式采用RTMP流,使用戶只能在線觀看,不能下載播放,保證了視頻資源的安全性。[2]

圖1 首頁:默認(rèn)顯示“院系課堂”的“院系列表”

圖2 要求通過計算中心的統(tǒng)一認(rèn)證

圖3 通過統(tǒng)一認(rèn)證后可查看所訪問院系的課程列表

圖4 單擊任一課程后得到該課程的所有視頻列表

圖5 單擊任一視頻進(jìn)入視頻點(diǎn)播畫面

圖6 首頁單擊直播教室看到直播教室的列表

直播:首頁單擊“直播教室”。如圖6所示,可以瀏覽北大網(wǎng)絡(luò)教育電視臺中15個直播教室,圖6中單擊任一教室,進(jìn)入如圖7所示的視頻畫面,可以在線觀看北大某一教室的教學(xué)實(shí)況。

意見建議:單擊導(dǎo)航條的“意見建議”,可以電話、短信、Email的方式進(jìn)行反饋。返回首頁:按手機(jī)上面的返回鍵。這里用代碼監(jiān)聽移動設(shè)備上的返回鍵,調(diào)用一段自定義代碼。關(guān)閉:單擊導(dǎo)航條的“退出”。

三、服務(wù)器端J2EE應(yīng)用的部署與配置

北大移動課堂客戶端程序,需要與遠(yuǎn)程服務(wù)器端的程序協(xié)作才能訪問北大視頻資源庫的視頻和北大網(wǎng)絡(luò)教育電視臺的頻道。[3]應(yīng)用服務(wù)器采用tomcat,Web應(yīng)用名稱為course,編程語言采用Java,開發(fā)框架采用Spring,Java后端與前端Flex的交互采用BlazeDS。BlazeDS是一個Adobe推出的基于服務(wù)器的Java遠(yuǎn)程調(diào)用和Web消息傳遞技術(shù),使后臺的Java應(yīng)用程序和前端Flex應(yīng)用程序能夠相互通信。Spring BlazeDS Integration是Adobe與Spring聯(lián)合開發(fā)的一個開源項(xiàng)目,使用該項(xiàng)目開發(fā)者可以通過BlazeDS公開Spring管理的Bean而無需額外配置文件。[4]關(guān)于這些技術(shù)單獨(dú)使用的方法和需要部署的Jar等請參考官方文檔。這幾項(xiàng)技術(shù)集成及協(xié)同工作的關(guān)鍵技術(shù)是本文論述的重點(diǎn)。

1.為了集成BlazeDS需要在web.xml中配置監(jiān)聽和servlet

在course應(yīng)用的web.xml中除了常規(guī)web應(yīng)用和Spring框架需要的配置之外,還需要為集成BlazeDS配置如下監(jiān)聽和servlet。

<listener-class>flex.messaging.HttpFlexSession</listener-class><servlet><servlet-name>RDSDispatchServlet</servlet-name><servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class><init-param><param-name>useAppserverSecurity</param-name><param-value>false</param-value></init-param><init-param><param-name>messageBrokerId</param-name><param-value>_message-Broker</param-value></init-param><load-on-startup>3</ load-on-startup></servlet><servlet-mapping id="RDS_D

ISPATCH_MAPPING"><servlet-name>RDSDispatch-Servlet</servlet-name><url-pattern>/CFIDE/main/ide. cfm</url-pattern></servlet-mapping>

2.通過BlazeDS公開Spring管理的Bean

為了能通過BlazeDS公開Spring管理的Bean,需要修改Spring標(biāo)準(zhǔn)配置文件。因?yàn)楸贝笠苿诱n堂要訪問服務(wù)器端三個實(shí)體及服務(wù)——院系 (department)、課程(course)、視頻(video),每個實(shí)體的服務(wù)中均提供了操作相應(yīng)實(shí)體的方法,如findPageResult(…)、findByPrimaryKey(…)等,下面以spring-department.xml為例說明。

①在spring的 bean中增加<flex:remoting-destination/>,即:<bean id="departmentService"parent="baseTx-Proxy"><property name="target"><bean class="pku.metc. department.service.impl.DepartmentServiceImpl"parent=" serviceTemplate"/></property><flex:remoting-destination/></bean>。②增加xml命名空間:xmlns:flex=http://www. springframework.org/schema/flex。③在書寫xml時需要遵循的語法xsi:schemaLocation中增加:http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www. springframework.org/schema/flex http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">。

四、客戶端Flex手機(jī)項(xiàng)目開發(fā)環(huán)境的建構(gòu)

開發(fā)北大移動課堂app采用的語言是Flex+Action-Script,項(xiàng)目開發(fā)環(huán)境是Flash Builder4.5。創(chuàng)建項(xiàng)目的方法為:文件>新建>flex手機(jī)項(xiàng)目,項(xiàng)目名稱:course;Flex SDK版本:4.5.1。單擊下一步,目標(biāo)平臺:勾選Apple IOS、BlackBerry Tablet OS、Google Android;應(yīng)用程序模板:基于視圖的應(yīng)用程序;應(yīng)用程序設(shè)置:自動重定向;DPI:160dpi。單擊下一步,服務(wù)器設(shè)置如圖8所示。單擊下一步,構(gòu)建路徑,驗(yàn)證RSL摘要,刪除未使用的RSL,在調(diào)試時使用本地調(diào)試運(yùn)行時共享庫,基于依賴項(xiàng)自動確定排序,主源文件夾 src,主應(yīng)用程序文件 course. mxml,應(yīng)用程序ID:course。單擊完成,自動產(chǎn)生了應(yīng)用程序入口框架文件course/src/course.mxml和主頁視圖文件course/src/views/courseView.mxml。因?yàn)楸緫?yīng)用程序要在首頁顯示 “院系列表”,所以修改course.mxml中的firstView="views.departmentListView",并把自動生成的courseView.mxml另存為departmentListView.mxml,得到了實(shí)際使用的主頁視圖文件。

五、客戶端使用Flash Builder的DCD技術(shù)調(diào)用服務(wù)器端BlazeDS遠(yuǎn)程服務(wù)

DCD(Data-Centric Development)數(shù)據(jù)中心開發(fā)技術(shù)是Flash Builder4.5的一個優(yōu)點(diǎn)之一,利用 DCD調(diào)用BlazeDS遠(yuǎn)程服務(wù)的方法如下。[5]

①確保服務(wù)器端已經(jīng)啟動 tomcat,并且 http:// 162.105.137.60:8080/course/通過瀏覽器是可訪問的。在Flash Builder中右擊名為course的Flex手機(jī)項(xiàng)目>>屬性>>Fex服務(wù)器,確保設(shè)置如圖8所示。②Flash Builder中數(shù)據(jù)菜單>>連接數(shù)據(jù)/服務(wù)>>BlazeDS>>下一步>>不需要密碼>>確定>>如圖9所示界面。這里不需要密碼的原因是上述 web.xml中為 RDSDispatchServlet設(shè)置了useAppserverSecurity參數(shù)值為 false。在圖 9中 Flash Builder列出了遠(yuǎn)程tomcat服務(wù)器的course應(yīng)用中所有通過BlazeDS公開的Spring管理的Bean服務(wù)。在圖9中,從“選擇要導(dǎo)入的目標(biāo)”中勾選要導(dǎo)入的BlazeDS服務(wù)如departmetnService院系服務(wù);在“服務(wù)包”和“數(shù)據(jù)類型包”中輸入把遠(yuǎn)程BlazeDS服務(wù)導(dǎo)入到Flex手機(jī)應(yīng)用的哪個包中;根據(jù)如圖9所示的輸入,在Flex手機(jī)應(yīng)用course的src下自動生成了pku.metc.department.service.DepartmentService.as和 pku.metc.department.vo.DepartmentVO.as。同樣的方法,自動導(dǎo)入BlazeDS遠(yuǎn)程的課程服務(wù)和視頻服務(wù)。得到pku.metc.course.service.CourseService.as,pku.metc.course.vo.CourseVO.as,pku.metc. video.service.VideoService.as,pku.metc.video.vo.Video-VO.as。為提高服務(wù)器端程序的可移性,在Flex手機(jī)應(yīng)用course/src下定義常量類 Const.as,在其中定義常量ENDPOINT:String=http://162.105.137.60:8080/course/。手動修改上面每個service的父類中的一行代碼_service-Control.endpoint=Const.ENDPOINT+"messagebroker/amf"。

六、以開發(fā)“院系列表”為例介紹Flex調(diào)用服務(wù)器端BlazeDS服務(wù)的機(jī)制

圖1所示“院系課堂”的“院系列表”的主程序?yàn)閐epartmentListView.mxml,為了在本程序中能訪問上述已經(jīng)導(dǎo)入的遠(yuǎn)程BlazeDS公開的類DepartmentService、對象departmentService、方法findPageResultResult,要做下面幾步。

①在<s:View標(biāo)簽中聲明命名空間 xmlns:departmentservice="pku.metc.department.service.*"。②在<fx: Declarations>進(jìn)行如下聲明:<fx:Declarations><s:CallResponder id="findPageResultResult"result="findPageResultResult_resultHandler (event)"/><departmentservice:DepartmentService id="departmentService"/></fx:Declarations>

用<s:List控件實(shí)現(xiàn)圖1中的“院系列表”的關(guān)鍵代碼 為 :<s:List id="departmentList"change="departmentList_changeHandler(event)"creationComplete="departmentList_creationCompleteHandler(event)"labelFunction="get_stringb_integera"><s:AsyncListView list="{com. adobe.serializers.utility.TypeUtility.convertToCollection (findPageResultResult.lastResult.list)}"/></s:List>

圖7 單擊任一直播教室進(jìn)入教室直播的畫面

圖8 Flex服務(wù)器設(shè)置

圖9 利用DCD技術(shù)調(diào)用BlazeDS遠(yuǎn)程服務(wù)

說明:①將AsyncListView對象的 list屬性綁定到CallResponder對象findPageResultResult的lastResult屬性,目的是對查詢結(jié)果利用TypeUtility.convertToCollection進(jìn)行類型轉(zhuǎn)換。②labelFunction="get_stringb_integera"作用是:把findPageResultResult.lastResult.list中的每一項(xiàng)進(jìn)行格式化為圖1中的如下形式:“物理學(xué)院 共7門課”。③creationComplete="…"表示s:List控件創(chuàng)建完成后自動調(diào)用的方法,該方法的作用是通過 departmentService.findPageResult發(fā)起服務(wù)調(diào)用,調(diào)用結(jié)果存入CallResponder類的對象findPageResultResult的名為token屬性中,該token屬性是AsyncToken類的一個實(shí)例。上面幾個方法的詳細(xì)代碼如下:

protected function departmentList_creationComplete-Handler(event:FlexEvent):void{findPageResultResult.token =departmentService.findPageResult("fromDepartment po where 1=1 order by po.integera desc",1,65535); }

private function get_stringb_integera(item:Object): String{return""+item.stringb+""+"共 "+item.integera+"門課";}

實(shí)現(xiàn)圖 1中按“院系名稱”查詢:界面關(guān)鍵代碼為<s:TextInput id="searchTxt"prompt="院系名稱"/><s:Button id="searchBtn"click="doSearch(event)">單擊查詢按鈕調(diào)用的doSearch方法,根據(jù)用戶輸入的“院系名稱”組合出查詢字符串,以此字符串作為參數(shù)觸發(fā) departmentService.findPageResult方法。doSearch詳細(xì)代碼為:

protected function doSearch(event:Event):void{this.addElement(busyIndicator);if(searchTxt.text!=""){find-PageResultResult.token=departmentService.findPageResult("fromDepartment po where 1=1 and po.stringb like′%"+searchTxt.text+"%′order by po.integera desc",1, 65535);} else {findPageResultResult.token =departmentService.findPageResult"from Department po where 1=1 order by po.integera desc",1,65535);}}

圖1中單擊任意一個院系名稱的處理機(jī)制為:為<s: List定義 change事件為"departmentList_changeHandler (event)",該方法的作用是判斷如果用戶沒有登錄,將“登錄視圖”logon推送到導(dǎo)航堆棧的頂部。否則就“課程列表視圖”courseListView推送到導(dǎo)航堆棧的頂部。詳細(xì)代碼為:

protected function departmentList_changeHandler (event:IndexChangeEvent):void{if(Const.ISLOGIN==false) {navigator.pushView (logon,departmentList.selectedItem);} else{navigator.pushView(courseListView,departmentList.selectedItem)}}

以上以開發(fā)“院系列表”實(shí)例介紹了Flex調(diào)用服務(wù)器端BlazeDS服務(wù)的機(jī)制,大部分的業(yè)務(wù)邏輯的實(shí)現(xiàn)在服務(wù)器端,F(xiàn)lex手機(jī)應(yīng)用只是對遠(yuǎn)程服務(wù)和方法的調(diào)用。

七、結(jié)語

北大移動課堂實(shí)現(xiàn)了讓北大師生能通過安卓手機(jī)點(diǎn)播北京大學(xué)視頻資源庫的教學(xué)視頻,在線觀看北大網(wǎng)絡(luò)教育電視臺的15個教室的教學(xué)實(shí)況。播放方式均采用RTMP流,使用戶只能在線觀看,不能下載播放,保證了視頻資源的安全性。北大移動課堂和北大的統(tǒng)一認(rèn)證結(jié)合,只有合法用戶才能正常訪問。基于Flex+Spring+ BlazeDS技術(shù)開發(fā)的北大移動課堂,良好穩(wěn)定地滿足了北大師生的需求。

[1]楊公義,張亦工.北京大學(xué)教室管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].現(xiàn)代教育技術(shù),2015(4):115-120.

[2]楊公義,張亦工.基于Red5的網(wǎng)絡(luò)教育電視臺的設(shè)計與實(shí)現(xiàn)[J].現(xiàn)代教育技術(shù),2012(8):109-112.

[3]陳飛,楊公義,李志剛等.基于Blackboard系統(tǒng)的“北大教學(xué)網(wǎng)”擴(kuò)展開發(fā)研究[J].北京大學(xué)教育評論,2013 (12):201-211.

[4]Spring BlazeDS Integration[EB/OL].http://docs. spring.io/spring-flex/docs/1.5.x/javadoc-api/index.html.

[5]Flex Test Drive[EB/OL].http://www.adobe.com/ cn/devnet/flex/testdrive/articles/1_build_a_flex_app2.html.

(編輯:王天鵬)

G434

:A

:1673-8454(2017)07-0045-04

教育部在線教育研究中心在線教育研究基金(全通教育)“慕課在線教學(xué)組織方法實(shí)證研究”(項(xiàng)目編號:2016ZD301)資助。

猜你喜歡
課程課堂
甜蜜的烘焙課堂
美食(2022年2期)2022-04-19 12:56:24
《無機(jī)化學(xué)》課程教學(xué)改革
云南化工(2021年6期)2021-12-21 07:31:42
美在課堂花開
數(shù)字圖像處理課程混合式教學(xué)改革與探索
軟件設(shè)計與開發(fā)實(shí)踐課程探索與實(shí)踐
翻轉(zhuǎn)課堂的作用及實(shí)踐應(yīng)用
甘肅教育(2020年12期)2020-04-13 06:24:48
嘻游課堂
十幾歲(2020年4期)2020-02-02 06:00:22
嘻游課堂
十幾歲(2020年13期)2020-02-02 02:08:44
為什么要學(xué)習(xí)HAA課程?
最好的課堂在路上
主站蜘蛛池模板: 国产亚洲一区二区三区在线| 国产精品白浆无码流出在线看| 美女潮喷出白浆在线观看视频| 欧美一级黄片一区2区| 亚洲无码37.| 国产另类乱子伦精品免费女| 被公侵犯人妻少妇一区二区三区| 亚洲黄色激情网站| 欧美精品成人| 国产午夜不卡| 亚洲91在线精品| 国产91精品久久| 九色视频在线免费观看| 野花国产精品入口| 又爽又大又光又色的午夜视频| 欧美激情视频一区二区三区免费| 无遮挡国产高潮视频免费观看 | 毛片免费视频| 日韩二区三区无| 992Tv视频国产精品| 自慰高潮喷白浆在线观看| 熟妇丰满人妻| 欧美日韩一区二区在线播放| a亚洲天堂| 午夜日韩久久影院| 亚洲无码精品在线播放| 久久77777| 99999久久久久久亚洲| 97影院午夜在线观看视频| 欧美区一区二区三| 99久久国产自偷自偷免费一区| 日韩精品免费一线在线观看| 日韩福利在线观看| 亚洲女人在线| 欧洲精品视频在线观看| 中文无码日韩精品| 日本人又色又爽的视频| 热re99久久精品国99热| 色欲国产一区二区日韩欧美| 天天操精品| 欧美午夜在线观看| 玖玖精品在线| 欧美69视频在线| 欧美成人a∨视频免费观看 | 国内精品手机在线观看视频| 欧美在线精品一区二区三区| 人妻精品久久无码区| 亚洲人成高清| 午夜日本永久乱码免费播放片| 亚洲一区二区黄色| 免费在线a视频| 伊人AV天堂| 日韩第一页在线| 欧美日韩在线亚洲国产人| 亚洲综合日韩精品| 亚洲天堂啪啪| 熟女视频91| 波多野结衣视频一区二区 | 91午夜福利在线观看| 久久人搡人人玩人妻精品 | 91欧美在线| 国产91色| 99久久国产精品无码| 美女被操91视频| 国产免费黄| 久草性视频| 2021天堂在线亚洲精品专区| 久久激情影院| 日韩在线欧美在线| 97在线观看视频免费| 国产在线无码一区二区三区| 最新国产精品鲁鲁免费视频| 99热精品久久| 成人午夜免费视频| 无码视频国产精品一区二区| 欧美日韩精品在线播放| 99热这里只有精品在线观看| 亚洲自偷自拍另类小说| 91福利免费视频| 91色爱欧美精品www| 国产乱人伦AV在线A| 欧美精品成人|