劉巨銘 溫柔 賴益強 周海貝
摘? 要:針對目前手機應用市場上關于阿拉伯語學習類APP功能單一,無法滿足學習者日常學習需求的問題,同時為了廣外南國商學院阿拉伯語學習者們能擁有一個具有自身特色的學習APP,設計并實現了口袋阿語APP。該APP基于Android平臺,使用了多線程、9Patch、XML、JSON和SHA-256等技術實現了用戶注冊登錄、單詞學習復習、趣味學習、個人中心和打卡簽到等功能。該APP可以為學習者們在移動端學習阿拉伯語帶來極大的便利和趣味性。
關鍵詞:Android;APP開發(fā);阿拉伯語;單詞學習
Abstract:Aiming at the problem that the functions of Arabic learning APPs in the current mobile application market are single,and cannot meet the daily learning needs of learners,at the same time,for the Arabic language learners of SCBC to have a learning APP with their own characteristics,the Pocket Arabic APP was designed and implemented. Based on the Android platform,the APP uses multi-threading,9Patch,XML,JSON and SHA-256 technologies to realize user registration and login,word learning and review,fun learning,personal center and check-in and other functions. The APP can bring great convenience and fun for learners to learn Arabic on the mobile terminal.
Keywords:Android;APP development;Arabic;word learning
0? 引? 言
國內對于英語學習軟件的開發(fā)起步較早,但與阿拉伯語相關的學習軟件可選擇范圍較小且功能單一。針對此問題,口袋阿語APP借鑒了各類外語學習APP軟件的功能特點,為阿語學習者們搭建了一個具有專業(yè)特色的學習互動平臺。該APP通過查詞、單詞學習、基于艾賓浩斯遺忘曲線的智能單詞復習、“消消樂”卡片復習和口袋阿語世界排行榜等功能模塊構成了一個完整的學習流程和激勵體系,用戶在使用口袋阿語APP學習時,可以有效提高用戶的注意力、提升學習過程的趣味性、提高用戶成就感并減少用戶遺忘等效果。筆者通過對廣東外語外貿大學南國商學院的阿拉伯語專業(yè)的師生進行需求調研,采用軟件工程的開發(fā)方法,結合APP設計理念針對口袋阿語APP進行了近一年的設計與開發(fā),本文從APP架構設計到具體的功能的設計與實現進行了詳細的闡述,旨在為學習類APP設計者和開發(fā)者分享設計與實現的思路和方法。
1? APP架構
1.1? 開發(fā)平臺——Android Studio
Android Studio是美國谷歌公司推出的一個基于IntelliJ IDEA的Android集成開發(fā)環(huán)境,谷歌公司在IDEA的基礎上為其提供了基于Gradle的構建支持、Android專屬的重構、優(yōu)化小貼士和功能強大的可即時預覽的布局編輯器等開發(fā)工具有效地提高了本項目開發(fā)和調試效率。
1.2? 開發(fā)語言——Java
Java是一種面向對象的語言,其語言特性是封裝、繼承和多態(tài),這些特性使得在犧牲一定的性能情況下能設計出低耦合的系統(tǒng),這樣的系統(tǒng)還具有易維護、易復用和易擴展的特點。在減少代碼量的同時還降低了系統(tǒng)維護成本。由于本項目的需求不斷變化,因此這些特點為開發(fā)和維護帶來了極大的便利。
1.3? 開發(fā)框架
本項目采用Android原生開發(fā),原生開發(fā)模式開發(fā)的APP具有運行速度快、性能高和兼容性好等特點。原生應用支持大量的圖形以及動畫,能更好操控手機硬件設備(比如多點觸控、NFC等),在開發(fā)中充分利用這些特點可以給予用戶更好的體驗。在本項目中以最為常用的MVP(Model View Presenter)架構搭建Android端,以SSM(Spring+SpringMVC+ Mybatis)框架搭建服務器后端與Android端進行JSON數據交互。基于MVP設計的系統(tǒng)具有代碼邏輯清晰、低耦合和方便維護等優(yōu)點。項目部署在裝有CentOS 7系統(tǒng)的云端服務器中,Android端通過Web請求實現前后端的數據交互,這樣前后端分離的設計模式更加符合現代APP需求快速變更的特以及海量數據需要存儲的基本特征,同時降低系統(tǒng)的耦合度,對日后的維護工作具有深遠意義。
2? 總體設計與需求分析
2.1? 功能框架介紹
功能模塊如圖1所示。
2.2? UI設計
APP部分UI設計如圖2、圖3所示。口袋阿語APP部分模塊的UI設計采用Google Material Design的設計風格,如趣味模塊中的“消消樂”卡片復習模式,就是直接采用了Android提供的原生MaterialCardView組件設計成卡片式布局,這樣具有動效且色彩大膽的卡片布局更符合視覺連貫性并且更有交互性,在用戶的使用過程中這些細節(jié)能給用戶帶來一種細膩的愉悅感。精致的UI設計可以使用戶在口袋阿語APP停留更多的時間,以此變相地增長用戶的學習時間。
2.3? 數據庫設計
通過前期的調研,根據需求分析說明書以及使用條件設計了滿足3NF范式的數據庫。在本項目中采用了MySQL數據庫,MySQL數據庫是關系型數據庫,其支持多種數據類型、語句和函數。數據庫部分數據表如表1~表3所示,數據庫E-R圖如圖4所示。
3? 功能實現
3.1? 注冊登錄模塊
注冊模塊采用了通過郵箱發(fā)送驗證碼的方式驗證本次注冊是一次“合法”的注冊,這種方式可以有效限制“非法”的注冊,如:編寫惡意程序短時間進行多次注冊或大量無用注冊等等,“非法”注冊會造成服務器擁擠甚至崩潰,導致?lián)p失大量用戶關鍵數據。這種方式不僅保護了服務器,同時也為用戶注冊帶來了更多的便利,利用郵箱注冊不需要用戶記住新建的賬號,只需要輸入使用了多年的郵箱地址即可,更可以為健忘的用戶提供了一個可靠的找回密碼的途徑。
登錄功能的初衷是把每個用戶的狀態(tài)數據持久化到服務器,但是傳統(tǒng)無免登錄功能的方式卻提高了打開這個APP的時間開銷,同時會間接地降低用戶體驗度。作為一個用戶每天都需要使用的APP,如果每次使用前都需要進行登錄操作是一件極其不愉快的事情,因此,口袋阿語APP在保證用戶信息安全的前提下把用戶登錄設計為具有時效性的登錄,即在一段合理時間內用戶可以免登錄使用APP,如果用戶長時間內處于不活躍的狀態(tài),系統(tǒng)會自動要求該用戶下一次使用時必須進行登錄。
用戶密碼是敏感信息,因為用戶很有可能為了便利把所有APP以及支付軟件的密碼都設置為同一個密碼,一旦泄漏會造成用戶個人信息泄漏甚至造成財產損失。因此用戶密碼加密是重中之重,口袋阿語APP在應用層使用SHA-256加密算法,使用戶密碼在網絡上傳輸時具有可靠的安全性。SHA-256是迭代的單向Hash函數,可以處理消息以產生稱為“消息摘要”的精簡表示。在抵抗生日攻擊和抵御已知差分攻擊方面,SHA-256比現在廣泛使用的MD5和SHA-1等更具安全性。
3.2? 查詞模塊
查詞模塊支持中文和阿拉伯語互查與模糊查詢,用戶在搜索框中輸入部分阿拉伯語字母時,APP會根據所輸入的字母進行即時查詢,并在搜索框下方提示符合輸入內容的單詞,以方便用戶通過直接點擊提示的單詞完成一次查詢動作,而不需要用戶輸入完整的單詞。用戶對搜索框內容的每一次修改都會觸發(fā)一次提示內容的更新,因此可以保證提示內容的實時性。用戶在輸入中文查阿拉伯語單詞時會根據用戶的輸入進行中文智能組詞,并在提示框中顯示,每一欄中文詞語后都會顯示該中文詞語的阿拉伯語近義詞供用戶參考。
3.3? 單詞學習復習模塊
3.3.1? 當前課時
口袋阿語APP默認按照課時是順序為用戶合理安排背詞內容,設n為每日必學單詞量,即一組詞,n∈[15,25](單位:個)為一組詞的合理區(qū)間。當一個用戶學習完第五章才開始使用這個APP的情況下,用戶可以點開當前課時功能選擇任意課時作為起點背誦。這個功能使得用戶在背詞內容選擇上更加的自由。
3.3.2? 章節(jié)學習情況
以章節(jié)為單位采用進度條的形式直觀地展示了用戶對當前詞書學習的具體情況,同時,給用戶制定未來學習計劃提供了參考數據。
3.3.3? 單詞學習
單詞學習以考核的形式學習,考核分為兩種形式:(1)提示阿拉伯語單詞,從選項中選出正確的中文意思;(2)提示中文,從選項中選出正確阿拉伯語單詞。這兩種方式出現的比例為2:1。選項數量的設定為四個。在選項內容的設定上,系統(tǒng)會首先檢測當前單詞是何種詞性,進一步篩選出同詞性的單詞作為干擾項。這樣的設置方式可以使得干擾項更具有迷惑性。具體流程圖如圖5所示。
3.3.4? 復習
復習提供了兩種模式分別是正常模式和趣味模式。正常模式下幾乎與“單詞學習”模塊中提供的考核模式相似,但在考核形式上兩種方式出現的比例會對調。趣味模式詳細的介紹在(3.4.2“消消樂”復習模式)中。復習的內容有兩種:(1)用戶自行選擇任意章節(jié)(可多選)作為復習內容;(2)系統(tǒng)會根據用戶的每日學習內容并依據艾賓浩斯遺忘曲線為用戶智能地規(guī)劃出當前需要復習的內容。
3.4? 趣味模塊
3.4.1? 阿拉伯語短視頻
短視頻的素材來源于阿拉伯本地的經典動畫片、電視劇、電影、新聞和學術講座等視頻的剪輯。剪輯的內容經過阿拉伯語言專業(yè)人士挑選,其內容為一小段(1~5句)對話和單人講述等,經過如此篩選的內容是具有一定教學意義的,在短視頻中也提供了考核方案和激勵措施。
(1)考核方案。用戶可以反復觀看一個短視頻,在點擊“開始回答”的按鈕后,界面出現兩個選擇按鈕以及一個倒計時器,倒計時的時長系統(tǒng)會根據當前視頻的時長設定??己说男问椒譃閮煞N:1)兩個按鈕內容相近時是考核對視頻的細節(jié)辨析;2)按鈕內容不相近時是考核對視頻的主旨大意理解。用戶作出選擇后,倒計時停止,以剩余的秒數作為本題目的分數計入用戶賬戶中。
(2)激勵措施。“口袋阿語世界”是一個由使用本APP的全體用戶構成的排行榜,會根據用戶的分數進行世界排名?!翱诖⒄Z世界”設置有周榜、月榜和年榜,榜首用戶可以獲得一枚勛章以及禮物作為激勵。用戶可以實時查看榜單以及自己當前的世界排名,可以邀請其他用戶建立群組排行。群組性質類似于學校中的班級,群組的初衷是為了方便阿拉伯語教師組織以班級為單位的每日學習任務(第二課堂),同時也可以讓多位志同道合的阿拉伯語學習者通過群內排名競爭以起到相互激勵的作用。
中國互聯(lián)網絡信息中心(CNNIC)的相關調查數據顯示,截至2020年3月,我國網民數量達9.04億,其中85.6%的網民使用短視頻應用,用戶規(guī)模達7.73億;而在用戶使用時長方面,截至2019年12月,短視頻則僅次于即時通信和網絡視頻(不含短視頻),位列第三。在此大背景下,阿拉伯語短視頻為阿拉伯語學習者提供了一種新式阿拉伯語學習途徑。短視頻這種表現形式,自誕生之日起便展現出獨特的吸引力和影響力,阿拉伯語短視頻使用戶可以在空閑的時候以愉悅輕松的方式在短時間內學習多種題材和多種場景的阿拉伯語知識。
3.4.2? “消消樂”復習模式
如圖3所示,考核方式一改傳統(tǒng)的四選一模式。用戶通過中文和阿拉伯語配對的方式消除掉兩個對應方塊,直到消除完六個方塊,卡片上會浮現出這些單詞對應的完整釋義。卡片式的布局可以使用戶在任意時候通過左右滑動瀏覽前面考核過的單詞,如圖6所示。
其中關鍵算法和難點是在對用戶點擊事件進行判斷后的動畫播放期間仍能對用戶的再次選詞提供準確和即時的判斷執(zhí)行,下文為代碼描述。
定義全局變量并用volatile修飾保證線程可見性,由于一張卡片中有三組元素,考慮到在用戶極端操作(上組配對動畫還未結束的1.5秒內完成全部配對),因此為保證系統(tǒng)的穩(wěn)定運行,入隊元素必須與卡片中元素組數相同。代碼為:
3.5? 用戶數據模塊
用戶數據包含了用戶密碼、已收藏和已學習單詞、個性化設置中的郵箱地址和頭像、用戶簽到等信息。用戶的簽到詳情,用戶的簽到詳情以萬年歷的形式展示給用戶,系統(tǒng)也會記錄每天的背詞數量,通過計算后以進度條形式展示,方便用戶了解學習情況。
4? 結? 論
目前應用市場上阿拉伯語學習APP偏少,或者大多數阿拉伯語學習APP規(guī)模偏小,缺乏針對性和科學的記憶方法。本文設計開發(fā)的基于Android的阿拉伯語單詞學習APP可以很好地滿足廣大阿拉伯語學習者的需要,另外該APP的移動學習模式符合大學生的心理訴求,豐富了阿拉伯語教學的形式和教學資源,成為學生課外自主學習的“第二課堂”,同時還打破了師生交流的時空限制,提高了學習交流的及時性。
參考文獻:
[1] 何潤民,馬俊.SHA-256算法的安全性分析 [J].電子設計工程,2014,22(3):31-33.
[2] 冉思清.社會學視域下短視頻與傳統(tǒng)電視比較 [J].青年記者,2020(24):64-65.
[3] 孫未冉.艾賓浩斯遺忘曲線在學習中的應用 [J].科學大眾(科學教育),2018(10):32.
[4] 劉東寧,馬立蓉.基于智能手機的高校阿拉伯語移動學習策略和模式分析 [J].當代教育實踐與教學研究,2019(19):35-36.
[5] LI Z Q,WANG Y N. Design and Implementation of Online Learning System based on Android Platform [J]. World Scientific Research Journal,2020,6(11):376-384.
[6] KURNIAWAN B,PERRY D. Android Application Development:A Tutorial [M].Canada:Brainy Software,2015.
[7] HENDIKAWATI P,ARIFUDIN R,ZAHID M Z. Development of computer-assisted instruction application for statistical data analysis android platform as learning resource [J]. Journal of Physics Conference Series,2018,983(1):1-7.
[8] KIM D K. Towards Performance-Enhancing Programming for Android Application Development [J]. International JOURNAL OF CONTENTS,2017,13(4):39-46.
[9] ALLEN G,OWENS M.SQLite權威指南:第2版 [M].楊謙,劉義宣,謝志強,譯.北京:電子工業(yè)出版社,2012.
[10] 孟德國,王耀龍,周金利,等.深入理解Android:WebKit卷 [M].北京:機械工業(yè)出版社,2016.
[11] 秦小波.設計模式之禪:第2版 [M].北京:機器工業(yè)出版社,2014.
[12] 張思民.Java語言程序設計:第3版 [M].北京:清華大學出版社,2015.
[13] 李俊山,葉霞,羅蓉,等.數據庫原理及應用(SQL Server):第3版 [M].北京:清華大學出版社,2017.
[14] GOETZ B,PEIERLS T,BLOCH J,等.Java并發(fā)編程實戰(zhàn) [M].童云蘭,譯.北京:機器工業(yè)出版社,2012.
作者簡介:劉巨銘(1998—),男,漢族,廣東肇慶人,本科在讀,研究方向:軟件工程;溫柔(1998—),女,漢族,廣東河源人,本科在讀,研究方向:阿拉伯語;賴益強(1982—),男,漢族,廣東梅州人,副教授,碩士,研究方向:數據庫技術;周海貝(1998—),女,漢族,廣東汕尾人,本科在讀,研究方向:阿拉伯語。