王凌燕, 張仕東, 王麗燕
(1.陜西科技大學 外國語與傳播學院, 陜西 西安 710021; 2.陜西科技大學 電氣與信息工程學院, 陜西 西安 710021)
隨著通信技術(shù)和互聯(lián)網(wǎng)絡(luò)的發(fā)展,移動學習作為一種新型教育方式,正受到越來越多的關(guān)注.它以其學習時間靈活,學習內(nèi)容短小、精煉且片段化等特點,開辟了學習的新理念,讓學習者真正擺脫了時間和空間的限制,使任何人在任何時間、任何地點根據(jù)需要進行自主學習成為可能[1].在教育改革的背景下,移動教育作為一種全新的教育方式,必將成為傳統(tǒng)教育的一種補充,其發(fā)展將充滿活力.
隨著國際化的日益增強和世界格局的變化,英語已經(jīng)發(fā)展成為世界第一通用語言.而作為一門語言,英語的基本功能就是交流,所以,英語口語的學習非常重要.如何高效靈活地學習英語口語,已經(jīng)成為廣大英語教育工作者和英語愛好者關(guān)注的一個熱點問題.而英語口語移動學習平臺不失為一種幫助人們掌握英語口語的有效途徑.本文擬結(jié)合英語口語學習的特點,開發(fā)出一個面向Android系統(tǒng)的英語口語移動學習平臺,方便用戶隨時隨地學習英語口語,進而達到推動全民學習英語的目標.
1.1.1 學習要求
(1)用戶為主體
基于Android的英語口語移動學習平臺是一個運行在用戶移動設(shè)備上的學習軟件,沒有人監(jiān)督,需要用戶自覺地學習.同時為用戶開放靈活的學習時間和學習地點,讓用戶在任何時候、任何地點都可以進行英語口語的學習.
(2)充分發(fā)揮移動學習的優(yōu)勢
本英語口語移動學習平臺充分應(yīng)用移動設(shè)備的便攜性、多媒體設(shè)備、實時定位能力等優(yōu)勢,為移動用戶設(shè)計小粒度的英語口語學習.在展示口語對話的同時播放原聲錄音,讓用戶同時感受視覺和聽覺的學習體驗,為用戶提供學伴互動功能,讓用戶之間可以相互交流學習.
(3)根據(jù)英語口語學習和移動學習的特點組織資源
移動學習具有學習時間分散、短小,學習內(nèi)容精煉且片段化等特點,而英語口語是一門語言,需要在各個場合下使用特定的口語.針對以上特點,本系統(tǒng)按情景組織口語對話,提供各情景下的對話學習,內(nèi)容短小且精煉,適合用戶在短時間內(nèi)學習.
1.1.2 技術(shù)要求
(1)平臺采用成熟的C/S架構(gòu),客戶端程序運行在Android移動設(shè)備上,服務(wù)器端程序運行在服務(wù)機上;
(2)客戶端與服務(wù)器的網(wǎng)絡(luò)通信采用Http協(xié)議,數(shù)據(jù)傳輸使用JSON數(shù)據(jù)傳輸協(xié)議;
(3)適合不同水平的用戶,操作簡單,易于使用;
(4)重視學習資源的豐富性,及時為客戶端更新學習資源.
根據(jù)平臺的設(shè)計原則,結(jié)合基于Http協(xié)議的C/S結(jié)構(gòu),本平臺的體系結(jié)構(gòu)如圖1所示.平臺在邏輯上分為三層:服務(wù)器端數(shù)據(jù)服務(wù)層,服務(wù)器端功能模塊層和客戶端層.其中客戶端層又分為客戶端功能模塊層和客戶端數(shù)據(jù)服務(wù)層.
圖1 基于Android的英語口語移動學習平臺體系結(jié)構(gòu)模型
1.2.1 客戶端功能模塊層
這一層與用戶直接交互,為用戶提供的功能均在這里,主要是通過服務(wù)器的協(xié)助管理賬號,利用本地學習資源數(shù)據(jù)庫為用戶提供英語口語學習功能.
1.2.2 客戶端數(shù)據(jù)服務(wù)層
本層主要存儲組織優(yōu)良的學習資源,為客戶端的學習功能提供數(shù)據(jù)服務(wù).
1.2.3 服務(wù)器端功能模塊層
本層主要是響應(yīng)處理客戶端發(fā)到服務(wù)器的請求并給客戶端返回處理結(jié)果,協(xié)助客戶端為用戶提供學習功能.
1.2.4 服務(wù)器端數(shù)據(jù)服務(wù)層
本層主要保存用戶信息、好友關(guān)系和客戶端學習資源更新等數(shù)據(jù),為客戶端提供必要的數(shù)據(jù)協(xié)助.
根據(jù)以上提出的平臺體系結(jié)構(gòu)模型,本文設(shè)計的移動英語口語平臺的主要功能如圖2所示.下文將對平臺體系結(jié)構(gòu)模型中的客戶端功能模塊層進行詳細分析和設(shè)計,并給出實現(xiàn)的效果.
圖2 平臺功能結(jié)構(gòu)圖
賬號管理模塊包括用戶登錄和注冊兩個功能.
用戶登錄時,要求用戶正確輸入登錄名和密碼,由客戶端檢查格式后發(fā)送到服務(wù)器請求登錄,服務(wù)器驗證后將登錄結(jié)果返回客戶端,客戶端根據(jù)返回的結(jié)果做出相應(yīng)的動作,如圖3(a)所示.
用戶注冊時,要求用戶正確輸入注冊名、密碼和密碼確認,由客戶端檢查格式后發(fā)送到服務(wù)器請求注冊,服務(wù)器執(zhí)行注冊動作,并將注冊結(jié)果返回客戶端,客戶端再根據(jù)返回的注冊結(jié)果做出相應(yīng)的動作,如圖3(b)所示.
在登錄或注冊成功的同時,后臺會打開一個獲取GPS信息的服務(wù)[2],該服務(wù)取得用戶當前位置的經(jīng)緯度并上傳到服務(wù)器,用于查找學伴時確定距離.
(a)用戶登錄界面 (b)用戶注冊界面圖3 賬號管理模塊界面圖
口語自學模塊為用戶提供以情景為單位的對話學習功能,其中包括按計劃學習和隨機學習兩個學習模式.按計劃學習是按用戶編輯好的學習計劃進行口語學習,如圖4(a)所示;隨機學習是列出所有情景,用戶點擊選擇其中感興趣的情景項進行學習,如圖4(b)所示.用戶開始學習后,軟件會在展示對話文本的同時播放對話語音,讓用戶可以跟讀,從而學習更地道的英語口語.
(a)按計劃學習界面效果圖 (b)隨機學習界面效果圖圖4 口語自學模塊效果圖
為了提高處理的速度,所有語音資源都是以二進制數(shù)組形式保存在本地數(shù)據(jù)庫中,需要播放語音時再從數(shù)據(jù)庫中取出,寫入臨時文件,再由播放器播放臨時文件[3].音頻文件在SQLite數(shù)據(jù)庫中的存儲和還原的相關(guān)代碼如下:
//將語音文件轉(zhuǎn)化為二進制數(shù)組
private ContentValues getVoiceFromFile(String filePath) {
ContentValues value = new
ContentValues();
InputStream inStream = null;
try {
inStream = context.getAssets().open(filePath);
ByteArrayBuffer byteArrayBuffer=
new ByteArrayBuffer(500);
int b;
while ((b = inStream.read()) !=-1) {
byteArrayBuffer.append(b);
}
value.put(SENTENCE_COLUMNS[4], byteArrayBuffer.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
return value;
}
//將語音數(shù)據(jù)保存到數(shù)據(jù)庫
privatevoid insertVoice(String filePath, int id) {
myLiteDataBase
.update(TABLE_NAME_SENTENCE, getVoiceFromFile(filePath),
SENTENCE_COLUMNS[0] + "=?",
new String[]
{ String.valueOf(id) });
}
//從數(shù)據(jù)庫中取出二進制數(shù)組后存為臨時文件,再播放臨時文件
private String getTempFilePath(int position) {
sentenceCursor.moveToPosition(position);
byte[] voice = sentenceCursor.getBlob(4);//取出二進制數(shù)組
File file = null;
try {
file = File.createTempFile("voice_cache", ".mp3");
if (!file.exists()) {
file.createNewFile();
Log.i("FILE", "Create");
}
FileOutputStream fos = new FileOutputStream(file);
fos.write(voice);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
String filePath = file.getAbsolutePath();
Log.i("CacheFile", filePath);
return filePath;
}
協(xié)作學習模塊主要是提供用戶之間相互交流的功能,用戶之間可以進行文本交流和語音交流,如圖5所示.用戶之間可以交流分享學習經(jīng)驗,請教問題等.
圖5 學伴界面效果圖 圖6 口語測評界面效果圖
為了便于用戶及時掌握自己的學習效果,并根據(jù)學習效果調(diào)整學習計劃以達到更好學習效果,我們設(shè)計了口語學習測評模塊,測評模塊分為語音測評和文字測評,如圖6所示.考慮到采用語音回答問題更能檢驗用戶口語的學習效果,專門設(shè)計了語音測評模塊,其中語音輸入是調(diào)用Google的語音識別組件,再在模塊中獲取識別結(jié)果即可,相關(guān)的源代碼如下:
//調(diào)用Google語音識別組件
privatevoid getAnswerByVoice() {
PackageManager packageManager=getPackageManager();
List
new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
if (activities.size() > 0) {
Log.i("ACTION_RECOGNIZE_SPEECH", "EXIST");
} else {
Log.i("ACTION_RECOGNIZE_SPEECH", "NOT_EXIST");
}
try {
Intent intent = new Intent();
intent.setAction(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak please!");
startActivityForResult(intent,REQUEST_CODE_VOICE);
} catch (Exception e) {
e.printStackTrace();
showMessage("找不到語音設(shè)備。");
}
}
//從返回的Intent中取得識別結(jié)果
private String getVoiceAnswerFromIntent(Intent data) {
ArrayList
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
String answer = "";
if (result.size() > 0) {
answer = result.get(0);
}
showMessage(answer);
return answer;
}
用戶在使用時,可以隨意選擇語音回答問題或文本回答問題,其中用戶測評完成或中途退出時,可以上傳本次測試成績到服務(wù)器;查看學伴排名時,系統(tǒng)將用學伴最近一次上傳的測評成績進行從高到低的排名,并將排名結(jié)果展示給用戶,以調(diào)動用戶的學習積極性.
學習資源更新模塊是客戶端為用戶更新學習資源所留的接口,用戶可以使用本功能隨時豐富學習資源.
隨著移動互聯(lián)技術(shù)的不斷發(fā)展、新的英語教學理念的出現(xiàn),以及教師、教育機構(gòu)、社會各界在實踐探索中參與度的增加,國內(nèi)將會涌現(xiàn)出更多高質(zhì)量的移動英語學習平臺,其必將成為方便廣大師生進行英語教學的有力工具[4].筆者從設(shè)計開發(fā)角度對“基于Android的英語口語移動學習平臺”進行研究,提出了平臺的設(shè)計原則、體系結(jié)構(gòu)、功能模塊設(shè)計與開發(fā)關(guān)鍵技術(shù),旨在探索現(xiàn)代移動通訊技術(shù)和英語口語學習的最佳結(jié)合點,力求在促進英語口語學習的同時,為類似移動學習平臺的設(shè)計與開發(fā)提供借鑒作用,進而達到利用手機推進全民學習的目的.
[1] 詹青龍,張靜然.移動學習的理論研究和實踐探索—與邁克·沙爾普斯教授的對話[J].中國電化教育,2010,31(3):1-7.
[2] 楊豐盛.Android應(yīng)用開發(fā)揭秘[M].北京:機械工業(yè)出版社,2010:459-481.
[3] 張仕成.基于Google Android平臺的應(yīng)用程序開發(fā)與研究[J].電腦知識與技術(shù),2009,5(7):959-7 962.
[4] 姚昱旻.基于Android的移動學習終端平臺的開發(fā)與研究[D].湖南:中南大學,2008.