摘 要: 設(shè)計了一款基于Android的翻轉(zhuǎn)式課堂教學(xué)系統(tǒng),,系統(tǒng)包括四個主要模塊:微課學(xué)習(xí)、課堂互動,、錯題本,、學(xué)情分析??蛻舳擞玫搅硕嗑€程交互,、afinal加載圖片以及gson解析數(shù)據(jù)等主要技術(shù);服務(wù)端運用了MVC模式,,通過Dao類來控制數(shù)據(jù)的訪問,。軟件適用于Android平板,可以廣泛應(yīng)用于各大中小學(xué)的課堂教學(xué)中,。使學(xué)生有更多的自主學(xué)習(xí)時間,,提高學(xué)生學(xué)習(xí)樂趣;老師可以系統(tǒng),、直觀地記錄每位學(xué)生的學(xué)習(xí)情況和自己教學(xué)情況,。
關(guān)鍵詞: Android;翻轉(zhuǎn)課堂,;在線教育,;移動開發(fā)
0 引言
當(dāng)今社會極高的網(wǎng)絡(luò)覆蓋率和智能設(shè)備的使用率必定會影響到現(xiàn)在的教育模式,因此翻轉(zhuǎn)課堂這種新興的教育類型就應(yīng)運而生,。在翻轉(zhuǎn)課堂中,,學(xué)生可以通過互聯(lián)網(wǎng)使用優(yōu)質(zhì)的教育資源,不再是單單地從課堂上獲取知識,。老師的角色也發(fā)生了變化,,其責(zé)任則是從主導(dǎo)學(xué)生的學(xué)習(xí)轉(zhuǎn)變?yōu)橐龑?dǎo)學(xué)生的學(xué)習(xí)[1-2]。
國外很早就嘗試了這種翻轉(zhuǎn)式的課堂教學(xué),,起源可以追溯到20世紀(jì)90年代初美國哈佛大學(xué)物理學(xué)教授埃里克·馬祖爾創(chuàng)立的“同伴教學(xué)法”[3],,其本質(zhì)就是要求學(xué)生課下自學(xué)課程內(nèi)容,,課上則是以“提問-思考-回答”的互動方式為主進(jìn)行教學(xué)。翻轉(zhuǎn)課堂在今后會成為一種教育趨勢,。
本文介紹了如何開發(fā)基于Android的翻轉(zhuǎn)式課堂教學(xué)APP軟件,。該軟件服務(wù)器端使用Java開發(fā),靈活運用了MVC模式[4-5](模型Model,、視圖View,、控制器Controller),如圖1所示,。使用HTTP通信協(xié)議,,可以為前端提供API。接口開發(fā)采用DAO模式,,一個DAO類關(guān)聯(lián)著相關(guān)的實體類,,并且對應(yīng)一個DAO實現(xiàn)類。通過這種方式可以方便快捷地通過接口查詢到數(shù)據(jù)庫中的數(shù)據(jù),。如果需要對某模塊進(jìn)行增,、刪、改,、查操作,,則可以直接調(diào)用該DAO類來實現(xiàn)[6]。
1 系統(tǒng)功能設(shè)計
本系統(tǒng)主要包含四個模塊:微課學(xué)習(xí),、課堂互動,、錯題集、學(xué)情分析,。數(shù)據(jù)庫設(shè)計采用關(guān)系型數(shù)據(jù)庫,,所有表均滿足第二范式。共設(shè)計有51張數(shù)據(jù)表,,如圖2所示,,每張表的每一項數(shù)據(jù)都有唯一的ID,這樣可以方便以后的操作,,不會因為某一列有重復(fù)數(shù)據(jù)導(dǎo)致缺失主鍵,。
1.1 微課學(xué)習(xí)模塊
微課學(xué)習(xí)模塊如圖3所示,主要包含了該學(xué)校提供的微課程,,用戶可以根據(jù)年級,、科目以及教課老師等分類進(jìn)行篩選查詢。學(xué)生可以為每門課程進(jìn)行評分,,評分高的課程將會出現(xiàn)在“推薦課程”欄目中,。學(xué)生也可以對每門課程進(jìn)行評論,用來發(fā)表觀后感。在觀看微課后,,學(xué)生可以在視頻下面的筆記模塊記錄學(xué)習(xí)心得,。該條記錄會在該學(xué)生每次打開這個視頻的時候顯示在下方。學(xué)生也可以在視頻下方的答疑模塊提出觀看視頻后存在的疑問,,該疑問會出現(xiàn)在老師的個人中心,老師可以對其進(jìn)行記錄并回復(fù),。每個微課視頻后都有老師布置的該科作業(yè),,學(xué)生的做題記錄會反饋到老師端,這樣老師就可以及時了解到學(xué)生的知識薄弱點,,并且對上課的講述重點進(jìn)行相應(yīng)的調(diào)整,。
1.2 課堂互動模塊
課堂互動模塊如圖4所示,主要用于活躍課堂氣氛,,增加老師與學(xué)生的交流,。老師進(jìn)入該模塊后首先選擇其正在上課的班級,再選擇其正在上課的科目(老師可能教多門課),,最后選擇其之前上傳的題組,。老師可以對題組中的題目進(jìn)行選擇,選擇完畢后發(fā)送給學(xué)生進(jìn)行搶答(選擇和判斷題),。進(jìn)入搶答界面后,,若老師點擊了開始搶答,則計時器會啟動,,在這段時間內(nèi),,該班級在線的學(xué)生將會收到老師開啟搶答的題目,并且可以進(jìn)行作答,。學(xué)生作答的實時結(jié)果會通過柱狀圖反應(yīng)給教師,,老師點擊選項對應(yīng)的柱狀圖后會顯示選擇該選項的所有學(xué)生。當(dāng)老師點擊了停止搶答或者搶答時間到了之后,,學(xué)生端也會顯示出全班的作答情況,,并且顯示出正確答案。做錯的題目會通過后臺自動加入到該生的錯題集,。老師也可以根據(jù)該題目的對錯人數(shù)進(jìn)行詳細(xì)的講解,。
1.3 錯題集模塊
錯題集多數(shù)情況由后臺操作,學(xué)生在課堂上或者課后做錯的題目都會自動加入該科目所在的錯題集,,學(xué)生點擊后可以查看到該題目的正確答案和詳細(xì)解答過程,,如圖5所示。
1.4 學(xué)情分析模塊
學(xué)情分析模塊主要是幫助老師和學(xué)生更加直觀地了解到班級以及自己的學(xué)習(xí)情況,,如圖6所示,。通過對比班級的歷次成績以及自身的成績,就可以讓學(xué)生了解到自己在這段時間的學(xué)習(xí)情況。老師也可以查看到年級中所有班級的平均分來分析自己在這段時間的教學(xué)成果,。
2 系統(tǒng)實現(xiàn)關(guān)鍵技術(shù)
2.1 視頻播放手勢控制
觀看微課時,,用戶可以通過左右滑動來控制快進(jìn)和后退、上下滑動來調(diào)整音量以及雙擊進(jìn)入全屏和退出全屏,。因為視頻播放本身是在一個scrollview中,,需要先在視頻控件中避免父控件攔截觸摸事件,使用requestDisallowInterceptTouchEvent(true)來實現(xiàn),。
滑動的監(jiān)聽事件主要是通過GestureDetector類來識別手勢,。滑動快進(jìn)時需要同時調(diào)整進(jìn)度條和當(dāng)前播放時間以及判斷是否播放完畢,。雙擊全屏則是通過判斷兩次點擊的間隔時間來做操作,。因視頻播放本身是一個fragment,所以全屏?xí)r需要修改側(cè)邊欄的屬性為GONE,。
如下代碼可以實現(xiàn)視頻的手勢快進(jìn):
if(Math.abs(distanceX)>Math.abs(distanceY)){
//橫向移動大于縱向移動
if(distanceX>=DpPxConvert.dip2px(((Activity)context),,STEP_PROGRESS)){ //快退,用步長控制改變速度,,可微調(diào)
gesture_iv_progress.setImageResource
?。≧.drawable.class_souhu_player_backward);
if(playerCurrentPosition>3*1000){//避免為負(fù)
playerCurrentPosition-=3*1000,;
//scroll方法執(zhí)行一次快退3 s
mediaPlayer.seekTo((int)playerCurrentPosition),;
}else{
playerCurrentPosition=3*1000;
mediaPlayer.seekTo((int)playerCurrentPosition),;
}
}else if(distanceX<=
-DpPxConvert.dip2px(((Activity)context),,
STEP_PROGRESS)){//快進(jìn)
gesture_iv_progress.setImageResource
(R.drawable.class_souhu_player_forward),;
if(playerCurrentPosition<playerDuration-16*1000){
//避免超過總時長
playerCurrentPosition+=3*1000,;
//scroll執(zhí)行一次快進(jìn)3 s
mediaPlayer.seekTo((int)playerCurrentPosition);
}else{
playerCurrentPosition=playerDuration-10*1000,;
mediaPlayer.seekTo((int)playerCurrentPosition),;
}
}
}
2.2 多線程交互
課堂互動的搶答功能是使用定時輪詢來請求數(shù)據(jù)。主線程無法訪問網(wǎng)絡(luò),,所以需要開辟新線程來請求網(wǎng)絡(luò)資源,。線程中需要請求:老師總共開啟的題目數(shù)、當(dāng)前為第幾道題目,、每個選項選擇的人數(shù),、題目內(nèi)容和答案解析、班級的人數(shù),、當(dāng)前提交的人數(shù)等,。因為不同時期需要請求不同的數(shù)據(jù)也就是開啟不同的線程,這就需要使用flag來控制線程的開和閉。
2.3 自定義Imageview
很多圖片因為移動設(shè)備尺寸限制導(dǎo)致圖片尺寸不夠大,,這時就需要放大,。放大就要通過自定義的imageview來實現(xiàn)原先沒有的功能,如手勢放大和拖拽移動,。實現(xiàn)這些功能需要獲取屏幕大小,、圖片大小、放大縮小的極限值,、縮放手勢時兩指的距離,、觸摸的位置等。根據(jù)觸摸點為一點或兩點(getPointerCount)來判斷是拖拽還是縮放,;再根據(jù)兩指的移動距離來判斷縮放的比例。
如下代碼可以實現(xiàn)圖片拖拽縮放:
if(scale>1&& this.getWidth()<=MAX_W){
current_Left=this.getLeft()-disX,;
current_Top=this.getTop()-disY,;
current_Right=this.getRight()+disX;
current_Bottom=this.getBottom()+disY,;
this.setFrame(current_Left,,current_Top,current_Right,,current_Bottom),;
/****此時考慮到對稱,只做一遍判斷就可以*/
if(current_Top<=0 && current_Bottom>=screen_H){
isControl_V=true,;//開啟垂直監(jiān)控
}else{
isControl_V=false,;
}
if(current_Left<=0&& current_Right>=screen_W){
isControl_H=true;//開啟水平監(jiān)控
}else{
isControl_H=false,;
}
}
2.4 Afinal加載圖片
Afinal是一個orm,、ioc框架,遵循約定大于配置原則,,無需任何配置即可完成所有工作,,但也可以通過配置去滿足個人的個性化需求。Afinal提倡代碼快速簡潔,。在Android開發(fā)中,,圖片的顯示必不可少,由于Android運行平臺的特點,,在加載圖片,,特別是加載網(wǎng)絡(luò)圖片時,一般都會完成圖片的緩存,,從而減少Android系統(tǒng)的運行負(fù)荷,。而完成圖片的緩存,又分為兩種,一種是完成圖片的本地緩存,,即把網(wǎng)絡(luò)加載過的圖片放在本地,,這樣當(dāng)下次再次加載相同圖片時,就可以直接從本地的硬盤中獲取圖片,,從而提高圖片的加載速度,,更重要的是減少流量和手機電量的損耗。另一種就是緩存在內(nèi)存的機制,。使用afinal,,當(dāng)listview滑動加載圖片時就會從內(nèi)存中獲取圖片資源。
如下代碼可以實現(xiàn)從網(wǎng)絡(luò)獲取圖片:
private FinalBitmap fb,;
fb=FinalBitmap.create(context),;
fb.display(View imageView,String uri,,int imageWidth,,int imageHeight);//分別傳入顯示圖片的imageview控件,,
圖片的url,,圖片的寬度,圖片的高度
2.5 后臺數(shù)據(jù)庫查詢封裝JDBC
本項目數(shù)據(jù)庫共有51張表,,因為牽涉到大量的數(shù)據(jù)處理與查詢,,所以需要健壯的方法來完成數(shù)據(jù)的處理,包括異常的捕捉,、sql語句的執(zhí)行以及查詢結(jié)果的轉(zhuǎn)換等,。
3 系統(tǒng)的實現(xiàn)
微課學(xué)習(xí)包括了學(xué)校提供的視頻課程、學(xué)生可以觀看老師安排的課程和自己感興趣的課程,,并且對視頻進(jìn)行評價以及提出疑問,。如圖7所示。
錯題集模塊用于記錄學(xué)生在本系統(tǒng)中課堂和課后做錯的題目,;學(xué)生也可以上傳自己在線下的錯題,。每道錯題都包含了正確答案和詳細(xì)的解析,便于學(xué)生進(jìn)行復(fù)習(xí)鞏固,,如圖8所示,。
學(xué)情分析是教學(xué)效果的體現(xiàn),用于分析學(xué)生某階段的學(xué)習(xí)情況,。師生可以查詢到每次考試的班級平均分以及個人在班級中所處的情況,,這些數(shù)據(jù)都是通過折線圖的形式表現(xiàn)出來,如圖9所示,。
通過長時,、多次的數(shù)據(jù)分析可以得出每位學(xué)生的雷達(dá)圖,,雷達(dá)圖中顯示學(xué)生的強項和弱項,讓學(xué)生可以更加了解自身的情況,,如圖10所示,。
4 結(jié)論
當(dāng)今的教育要求學(xué)生有較強的自學(xué)能力,有自己的思想,,會合理安排自己的時間,,翻轉(zhuǎn)課堂使學(xué)生可以通過互聯(lián)網(wǎng)去使用優(yōu)質(zhì)的教育資源,不再是單單地從課堂上獲取知識,?;贏ndroid的翻轉(zhuǎn)式課堂教學(xué)APP軟件,包含了微課學(xué)習(xí),、課堂互動,、錯題集和學(xué)情分析等功能,適應(yīng)了現(xiàn)代教學(xué)的需求,,老師根據(jù)學(xué)生課后作業(yè)的情況提前對講課重點進(jìn)行調(diào)整,,通過該軟件能很好地將翻轉(zhuǎn)課堂運用到教學(xué)實踐中,為課堂教學(xué)改革提供新的可能,。
參考文獻(xiàn)
[1] 秦?zé)槦?翻轉(zhuǎn)學(xué)習(xí):課堂教學(xué)改革的新范式[J].電化教育研究,2013(8):84-90.
[2] 臺大校訓(xùn).哈佛大學(xué)教授Eric Mazur蒞校演講開啟互動教學(xué)與創(chuàng)意實驗藍(lán)圖[N].2010-06-16(4).
[3] MAZUR E. Can we teach computers to teach[J]. Computers in Physics,,1991,,5(1):31-37.
[4] 李佐彬.Android開發(fā)入門與實戰(zhàn)體驗[M].北京:機械工業(yè)出版社,2011.
[5] 邁耶(Reto Meier).Android4高級編程(第3版)[M].余建偉,,趙凱,,譯.北京:清華大學(xué)出版社,2013.
[6] 孫衛(wèi)琴,,李洪成.Tomcat與Java Web開發(fā)技術(shù)詳解(第2版)[M].北京:電子工業(yè)出版社,,2009.