安輝 馮君



摘? 要:本文分析了基于Android平臺(tái)的英語(yǔ)學(xué)習(xí)APP的設(shè)計(jì)實(shí)現(xiàn)思路,使用SQLite實(shí)現(xiàn)本地?cái)?shù)據(jù)存儲(chǔ),通過(guò)艾賓浩斯記憶曲線輔助用戶識(shí)記單詞,另外設(shè)有單詞查詢、句子翻譯、英文文章和例句的閱讀以及英文文章單詞提取等功能,方便用戶進(jìn)行不同的學(xué)習(xí)活動(dòng),讓用戶可以最大程度地利用碎片化時(shí)間學(xué)習(xí)英語(yǔ)。
關(guān)鍵詞:Android;英語(yǔ)學(xué)習(xí)APP;艾賓浩斯記憶算法
中圖分類(lèi)號(hào):TP311.5;TP316? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2019)21-0001-03
Abstract:This paper analyses the design and implementation of English learning APP based on Android technology,uses SQLite to realize local data storage,assists users to memorize words through the Ebbinghaus memory curve,and has functions of word query,sentence translation,reading of English articles and examples,and word extraction of English articles. It is convenient for users to carry out different learning activities,so that users can maximize the use of fragmented time to learn English.
Keywords:Android;English learning APP;Ebbinghaus memory algorithm
0? 引? 言
從第一款官方Android手機(jī)首次亮相到現(xiàn)在,它的發(fā)展非常迅速。現(xiàn)如今,裝有Android操作系統(tǒng)[1]的智能手機(jī)無(wú)處不在,它也成功擊敗了Symbian、Palm OS和Windows Phone等眾多競(jìng)爭(zhēng)對(duì)手,成為世界上最受歡迎的手持設(shè)備操作系統(tǒng),而它的開(kāi)放源代碼也為Android的軟件開(kāi)發(fā)提供了許多便利,進(jìn)而吸引了眾多開(kāi)發(fā)者開(kāi)發(fā)出許多有創(chuàng)意的軟件。
以手機(jī)為依托的移動(dòng)學(xué)習(xí)軟件逐漸成為新型的教育和學(xué)習(xí)途徑,使用手機(jī)進(jìn)行學(xué)習(xí)活動(dòng),可以使學(xué)習(xí)者隨時(shí)隨地開(kāi)展學(xué)習(xí),最大程度地利用碎片化時(shí)間。英語(yǔ)是國(guó)際公認(rèn)的科學(xué)語(yǔ)言,隨著全球化進(jìn)程的加快,我們和英語(yǔ)的關(guān)系也越來(lái)越密切,大多數(shù)與計(jì)算機(jī)技術(shù)有關(guān)的知識(shí)都是英文的,平常的學(xué)習(xí)工作也需要閱讀大量的英文文獻(xiàn),所以,學(xué)習(xí)英語(yǔ)已經(jīng)成為現(xiàn)在學(xué)生和上班族等群體的必要任務(wù)。
國(guó)外的Android開(kāi)發(fā)起步比國(guó)內(nèi)早,在英語(yǔ)學(xué)習(xí)軟件方面也有一定的領(lǐng)先。在早些時(shí)候,波蘭有兩位博士(Dr Edward Jacek與Dr Piotr Wozniak)開(kāi)始研究一種更加有效的單詞記憶方法,他們基于一種可以有效提升記憶效果的遺忘復(fù)習(xí)算法編寫(xiě)了一款英語(yǔ)學(xué)習(xí)軟件——“SuperMemo”[2],但后來(lái)被“ideally pro”所趕超。對(duì)于國(guó)外的英語(yǔ)學(xué)習(xí)軟件雖然較國(guó)內(nèi)而言成熟一些,但它們大都以更加貼合自己國(guó)家的人的語(yǔ)言學(xué)習(xí)習(xí)慣,不能很好地適合國(guó)內(nèi)的用戶,所以對(duì)于國(guó)內(nèi)的用戶而言,略有欠缺。
目前,國(guó)內(nèi)在Android平臺(tái)下設(shè)計(jì)開(kāi)發(fā)的英語(yǔ)學(xué)習(xí)軟件存在著實(shí)用性不強(qiáng)、用戶體驗(yàn)不夠,學(xué)習(xí)效果差等缺陷,例如百詞斬的單詞背誦界面會(huì)配有圖片,這樣雖然可以加深用戶對(duì)單詞的理解,但最后的結(jié)果可能就是只是記住了圖片,對(duì)單詞本身的記憶并不足夠。而扇貝英語(yǔ)在單詞背誦方面的設(shè)計(jì)過(guò)于嚴(yán)苛,用戶對(duì)于單詞記憶的形式不夠靈活,用戶在使用過(guò)程中會(huì)逐漸失去興趣。
本文開(kāi)發(fā)的英語(yǔ)學(xué)習(xí)APP的目標(biāo)就是為有英語(yǔ)學(xué)習(xí)需求的人提供一款方便的學(xué)習(xí)APP。
1? 總體功能
軟件以單詞背誦為起點(diǎn),提供一款單詞查詢、句子翻譯和單詞背誦等相結(jié)合的軟件,具體功能如下。
1.1? 單詞背誦
根據(jù)預(yù)設(shè)或用戶的設(shè)置每天給出合適的單詞量讓用戶記憶,具體復(fù)習(xí)哪些單詞是參照艾賓浩斯記憶規(guī)律[3]推算出的。使用科學(xué)的單詞復(fù)習(xí)法可以讓用戶減少對(duì)已認(rèn)識(shí)的單詞復(fù)習(xí)的時(shí)間,增加難記住單詞的復(fù)習(xí)時(shí)間,用戶可以在有限的時(shí)間內(nèi)盡可能多地復(fù)習(xí)更需要鞏固的單詞,提高學(xué)習(xí)效率[4]。
1.2? 單詞查詢
可查詢生詞的發(fā)音、音標(biāo)和例句等,還可將單詞加入個(gè)人生詞本方便記憶學(xué)習(xí)。
1.3? 整句翻譯
將句子翻譯成英文或者中文,句子翻譯不僅僅局限于中文英文的相互翻譯,還可實(shí)現(xiàn)文言文、繁體中文、韓語(yǔ)、法語(yǔ)等多種語(yǔ)言的相互翻譯。
1.4? 英文文章單詞提取
將英文文章中的所有單詞提取出來(lái),存儲(chǔ)為一個(gè)組合,讓用戶可以在背誦英文文章前可以先學(xué)習(xí)里面的單詞,在對(duì)這篇文章中的單詞有了一定的認(rèn)知后,再去學(xué)習(xí)這篇文章就可以避免邊查單詞邊讀文章的情況,降低背誦的難度,提高背誦速度。
1.5? 英文原文閱讀
提供真題文章、英文名著、著名英文的雜志期刊等,提高用戶的閱讀能力。
1.6? 單詞場(chǎng)景強(qiáng)化
總體功能模塊圖如圖1所示。
推送包含用戶正在背誦的單詞的例句,讓用戶在練習(xí)閱讀英語(yǔ)句子的過(guò)程中記憶單詞,提高用戶對(duì)單詞的理解,加深對(duì)單詞的認(rèn)識(shí)。
2? 主要模塊實(shí)現(xiàn)思路
2.1? 單詞復(fù)習(xí)模塊
打開(kāi)復(fù)習(xí)界面時(shí),實(shí)例化一個(gè)Review(復(fù)習(xí)算法)對(duì)象,根據(jù)復(fù)習(xí)量及需要復(fù)習(xí)的單詞,從數(shù)據(jù)庫(kù)中將當(dāng)日需要復(fù)習(xí)的單詞取出,存入復(fù)習(xí)列表List,然后將復(fù)習(xí)列表List傳入實(shí)例化的Review對(duì)象。
取出第一個(gè)單詞,新開(kāi)線程從數(shù)據(jù)庫(kù)中獲取該單詞的詳細(xì)信息以及例句并生成單詞復(fù)習(xí)界面,只顯示單詞和音標(biāo),同時(shí)給出發(fā)音提示,但不顯示單詞詳細(xì)意思以及例句,給用戶自己思考的時(shí)間。當(dāng)用戶思考完畢,點(diǎn)擊屏幕空白處,展示出單詞詳細(xì)意思以及例句,用戶在看到正確的詳細(xì)解釋后,根據(jù)自己對(duì)這個(gè)單詞的記憶程度點(diǎn)擊代表三種記憶深度的按鈕。按鈕響應(yīng)方法中,調(diào)用Review的setMemory方法傳入記憶深度信息。根據(jù)不同的記憶深度設(shè)置當(dāng)前復(fù)習(xí)的單詞在本次復(fù)習(xí)中是否繼續(xù)出現(xiàn)以及出現(xiàn)的位置和頻率,然后將單詞從復(fù)習(xí)列表List第一位刪除插入到后面的相應(yīng)位置。若這個(gè)單詞當(dāng)日第一次出現(xiàn),則根據(jù)記憶深度確定單詞在數(shù)據(jù)庫(kù)中存儲(chǔ)的記憶深度以及后續(xù)復(fù)習(xí)的日期。若當(dāng)前單詞在當(dāng)日不會(huì)再次出現(xiàn),即此單詞當(dāng)日復(fù)習(xí)完畢,則將當(dāng)日第一次復(fù)習(xí)單詞時(shí)確認(rèn)的記憶深度信息以及后續(xù)復(fù)習(xí)日期寫(xiě)入數(shù)據(jù)庫(kù),同時(shí)在復(fù)習(xí)列表List中刪除此單詞。
單詞復(fù)習(xí)模塊流程圖如圖2所示。
2.2? 例句顯示模塊
例句顯示使用ListView實(shí)現(xiàn),每一個(gè)例句對(duì)應(yīng)一個(gè)Item,包括中文TextView和英文TextView。其中英文TextView一直顯示,而中文TextView在ListView剛生成時(shí)是隱藏的,需要用戶點(diǎn)擊Item的空白處將其顯示。在需要繪制ListView的地方,實(shí)例化一個(gè)ExampleSentenceLv對(duì)象,并在調(diào)用其構(gòu)造方法時(shí)傳入ListView對(duì)象、Context以及用于存儲(chǔ)例句的ArrayList。在ExampleSentenceLv對(duì)象中使用Example SentenceAdapter設(shè)置此ListView的數(shù)據(jù)。并添加Item的點(diǎn)擊事件,在點(diǎn)擊事件的方法中反轉(zhuǎn)例句中文的是否可見(jiàn),以用于顯示和隱藏中文意思。
ExampleSentenceLv類(lèi)的構(gòu)造方法:
public ExampleSentenceLv(ListView lvExample, Context context,
List
this.lvExample = lvExample;
this.context = context;
this.exampleSentenceItemLists = example SentenceItemLists;
//實(shí)例化ExampleSentenceAdapter對(duì)象
exampleSentenceAdapter = new ExampleSentence Adapter(context,exampleSentenceItemLists);
lvExample.setAdapter(exampleSentenceAdapter);
//添加Item點(diǎn)擊事件
lvExample.setOnItemClickListener(new itemClickListener());
}
例句顯示模塊流程圖如圖3所示。
2.3? 點(diǎn)詞查詢模塊
對(duì)于文章中用來(lái)顯示英文句子或者英文文章的TextView對(duì)象,在調(diào)用setText方法傳入字符串的同時(shí),定義其文本特征的文本緩沖區(qū)的類(lèi)型為Spannable。然后實(shí)例化一個(gè)ClickEachWord對(duì)象,并將參數(shù)Context以及TextView對(duì)象傳入構(gòu)造方法。
在構(gòu)造方法中,調(diào)用getEachWord方法遍歷TextView對(duì)象中的單詞,并分別為其添加點(diǎn)擊事件的監(jiān)聽(tīng)器。然后調(diào)用TextView的setMovementMethod方法設(shè)置TextView為可點(diǎn)擊,最后調(diào)用TextView的setFocusable方法設(shè)置此TextView是否接收焦點(diǎn)。
在點(diǎn)擊事件的監(jiān)聽(tīng)器的方法中從TextView中提取出單詞的字符串傳入dialog方法,進(jìn)行單詞詳情彈窗的繪制。進(jìn)入dialog方法后,首先新開(kāi)線程去從數(shù)據(jù)庫(kù)中讀取單詞的詳細(xì)信息,接著進(jìn)行Dialog窗體以及里面元素的初始化。單詞信息從數(shù)據(jù)庫(kù)讀出后發(fā)送Handler信息,調(diào)用主線程方法解析從數(shù)據(jù)庫(kù)返回的結(jié)果集,并將數(shù)據(jù)更新到Dialog窗體。在彈窗后,用戶可以點(diǎn)擊Dialog窗體中的加入生詞本按鈕選擇將單詞加入個(gè)人生詞本,以方便以后的學(xué)習(xí)記憶。也可以點(diǎn)擊空白處或者Dialog窗體的外面取消保存。
2.4? 文章單詞提取模塊
由于程序不具備單詞識(shí)別的功能,而要處理的文章會(huì)以字符串的形式保存,所以用空格以及其他字符分割符,將字符串分割為若干小字符串,這些小字符串即為單個(gè)單詞。
當(dāng)用戶需要提取文章中的單詞時(shí),讀取EditText,將用戶要提取單詞的文章保存為字符串,實(shí)例化Article2Words對(duì)象傳入文章字符串。
在Article2Words對(duì)象中,首先調(diào)用splitWord()方法將括號(hào)、下劃線、雙引號(hào)等無(wú)關(guān)字符全部替換成空格,并根據(jù)空格進(jìn)行分割字符串,將結(jié)果保存在rawWords數(shù)組里,然后調(diào)用countWordFreq()方法統(tǒng)計(jì)單詞,利用Set集合內(nèi)元素的唯一性除去重復(fù)單詞。文章單詞提取流程圖如圖4所示。
3? 結(jié)? 論
本文所實(shí)現(xiàn)的英語(yǔ)學(xué)習(xí)APP主要研究基于艾賓浩斯記憶算法,科學(xué)地制定單詞復(fù)習(xí)計(jì)劃,本地SQLite數(shù)據(jù)庫(kù)和聯(lián)網(wǎng)相結(jié)合的方式既可以節(jié)省流量和內(nèi)存空間,又可以準(zhǔn)確高效地查詢單詞,生詞本功能方便用戶以后的學(xué)習(xí),句子翻譯功能基于百度提供的句子翻譯API進(jìn)行翻譯,根據(jù)用戶的設(shè)置推送適合用戶的英文讀物。今后還會(huì)對(duì)其進(jìn)行優(yōu)化,爭(zhēng)取將本英語(yǔ)學(xué)習(xí)軟件上架到應(yīng)用商店,成為一款可以實(shí)際應(yīng)用、用戶體驗(yàn)極佳的Android應(yīng)用。
參考文獻(xiàn):
[1] 吳珊.Android的系統(tǒng)及應(yīng)用的架構(gòu) [J].電子技術(shù)與軟件工程,2019(3):148.
[2] 張紅.記憶軟件SuperMemo UX在高職高專(zhuān)院校詞匯教學(xué)中的有效性研究 [J].考試周刊,2013(11):94-95.
[3] 李琳,馮詩(shī)涵.“互聯(lián)網(wǎng)+”背景下英語(yǔ)學(xué)習(xí)類(lèi)APP記憶模式研究 [J].海外英語(yǔ),2019(4):129-130.
[4]周子愉.基于艾賓浩斯遺忘曲線的個(gè)性化推薦算法 [J].電子制作,2018(Z2):83-84+69.
作者簡(jiǎn)介:安輝(1995.04-),男,漢族,山東日照人,本科,研究方向:計(jì)算機(jī)科學(xué)與技術(shù);通訊作者:馮君(1980.07-),女,漢族,山東濱州人,副教授,碩士,研究方向:軟件技術(shù)與理論、移動(dòng)開(kāi)發(fā)、智慧教育。