APP下载

基于Android平台的英语学习APP应用研究

2019-10-21安辉冯君

现代信息科技 2019年21期

安辉 冯君

摘  要:本文分析了基于Android平台的英语学习APP的设计实现思路,使用SQLite实现本地数据存储,通过艾宾浩斯记忆曲线辅助用户识记单词,另外设有单词查询、句子翻译、英文文章和例句的阅读以及英文文章单词提取等功能,方便用户进行不同的学习活动,让用户可以最大程度地利用碎片化时间学习英语。

关键词:Android;英语学习APP;艾宾浩斯记忆算法

中图分类号:TP311.5;TP316      文献标识码:A 文章编号: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手机首次亮相到现在,它的发展非常迅速。现如今,装有Android操作系统[1]的智能手机无处不在,它也成功击败了Symbian、Palm OS和Windows Phone等众多竞争对手,成为世界上最受欢迎的手持设备操作系统,而它的开放源代码也为Android的软件开发提供了许多便利,进而吸引了众多开发者开发出许多有创意的软件。

以手机为依托的移动学习软件逐渐成为新型的教育和学习途径,使用手机进行学习活动,可以使学习者随时随地开展学习,最大程度地利用碎片化时间。英语是国际公认的科学语言,随着全球化进程的加快,我们和英语的关系也越来越密切,大多数与计算机技术有关的知识都是英文的,平常的学习工作也需要阅读大量的英文文献,所以,学习英语已经成为现在学生和上班族等群体的必要任务。

国外的Android开发起步比国内早,在英语学习软件方面也有一定的领先。在早些时候,波兰有两位博士(Dr Edward Jacek与Dr Piotr Wozniak)开始研究一种更加有效的单词记忆方法,他们基于一种可以有效提升记忆效果的遗忘复习算法编写了一款英语学习软件——“SuperMemo”[2],但后来被“ideally pro”所赶超。对于国外的英语学习软件虽然较国内而言成熟一些,但它们大都以更加贴合自己国家的人的语言学习习惯,不能很好地适合国内的用户,所以对于国内的用户而言,略有欠缺。

目前,国内在Android平台下设计开发的英语学习软件存在着实用性不强、用户体验不够,学习效果差等缺陷,例如百词斩的单词背诵界面會配有图片,这样虽然可以加深用户对单词的理解,但最后的结果可能就是只是记住了图片,对单词本身的记忆并不足够。而扇贝英语在单词背诵方面的设计过于严苛,用户对于单词记忆的形式不够灵活,用户在使用过程中会逐渐失去兴趣。

本文开发的英语学习APP的目标就是为有英语学习需求的人提供一款方便的学习APP。

1  总体功能

软件以单词背诵为起点,提供一款单词查询、句子翻译和单词背诵等相结合的软件,具体功能如下。

1.1  单词背诵

根据预设或用户的设置每天给出合适的单词量让用户记忆,具体复习哪些单词是参照艾宾浩斯记忆规律[3]推算出的。使用科学的单词复习法可以让用户减少对已认识的单词复习的时间,增加难记住单词的复习时间,用户可以在有限的时间内尽可能多地复习更需要巩固的单词,提高学习效率[4]。

1.2  单词查询

可查询生词的发音、音标和例句等,还可将单词加入个人生词本方便记忆学习。

1.3  整句翻译

将句子翻译成英文或者中文,句子翻译不仅仅局限于中文英文的相互翻译,还可实现文言文、繁体中文、韩语、法语等多种语言的相互翻译。

1.4  英文文章单词提取

将英文文章中的所有单词提取出来,存储为一个组合,让用户可以在背诵英文文章前可以先学习里面的单词,在对这篇文章中的单词有了一定的认知后,再去学习这篇文章就可以避免边查单词边读文章的情况,降低背诵的难度,提高背诵速度。

1.5  英文原文阅读

提供真题文章、英文名著、著名英文的杂志期刊等,提高用户的阅读能力。

1.6  单词场景强化

总体功能模块图如图1所示。

推送包含用户正在背诵的单词的例句,让用户在练习阅读英语句子的过程中记忆单词,提高用户对单词的理解,加深对单词的认识。

2  主要模块实现思路

2.1  单词复习模块

打开复习界面时,实例化一个Review(复习算法)对象,根据复习量及需要复习的单词,从数据库中将当日需要复习的单词取出,存入复习列表List,然后将复习列表List传入实例化的Review对象。

取出第一个单词,新开线程从数据库中获取该单词的详细信息以及例句并生成单词复习界面,只显示单词和音标,同时给出发音提示,但不显示单词详细意思以及例句,给用户自己思考的时间。当用户思考完毕,点击屏幕空白处,展示出单词详细意思以及例句,用户在看到正确的详细解释后,根据自己对这个单词的记忆程度点击代表三种记忆深度的按钮。按钮响应方法中,调用Review的setMemory方法传入记忆深度信息。根据不同的记忆深度设置当前复习的单词在本次复习中是否继续出现以及出现的位置和频率,然后将单词从复习列表List第一位删除插入到后面的相应位置。若这个单词当日第一次出现,则根据记忆深度确定单词在数据库中存储的记忆深度以及后续复习的日期。若当前单词在当日不会再次出现,即此单词当日复习完毕,则将当日第一次复习单词时确认的记忆深度信息以及后续复习日期写入数据库,同时在复习列表List中删除此单词。

单词复习模块流程图如图2所示。

2.2  例句显示模块

例句显示使用ListView实现,每一个例句对应一个Item,包括中文TextView和英文TextView。其中英文TextView一直显示,而中文TextView在ListView刚生成时是隐藏的,需要用户点击Item的空白处将其显示。在需要绘制ListView的地方,实例化一个ExampleSentenceLv对象,并在调用其构造方法时传入ListView对象、Context以及用于存储例句的ArrayList。在ExampleSentenceLv对象中使用Example SentenceAdapter设置此ListView的数据。并添加Item的点击事件,在点击事件的方法中反转例句中文的是否可见,以用于显示和隐藏中文意思。

ExampleSentenceLv类的构造方法:

public ExampleSentenceLv(ListView lvExample, Context context,

ListexampleSentenceItemLists) {

this.lvExample = lvExample;

this.context = context;

this.exampleSentenceItemLists = example SentenceItemLists;

//实例化ExampleSentenceAdapter对象

exampleSentenceAdapter = new ExampleSentence Adapter(context,exampleSentenceItemLists);

lvExample.setAdapter(exampleSentenceAdapter);

//添加Item点击事件

lvExample.setOnItemClickListener(new itemClickListener());

}

例句显示模块流程图如图3所示。

2.3  点词查询模块

对于文章中用来显示英文句子或者英文文章的TextView对象,在调用setText方法传入字符串的同时,定义其文本特征的文本缓冲区的类型为Spannable。然后实例化一个ClickEachWord对象,并将参数Context以及TextView对象传入构造方法。

在构造方法中,调用getEachWord方法遍历TextView对象中的单词,并分别为其添加点击事件的监听器。然后调用TextView的setMovementMethod方法设置TextView为可点击,最后调用TextView的setFocusable方法设置此TextView是否接收焦点。

在点击事件的监听器的方法中从TextView中提取出单词的字符串传入dialog方法,进行单词详情弹窗的绘制。进入dialog方法后,首先新开线程去从数据库中读取单词的详细信息,接着进行Dialog窗体以及里面元素的初始化。单词信息从数据库读出后发送Handler信息,调用主线程方法解析从数据库返回的结果集,并将数据更新到Dialog窗体。在弹窗后,用户可以点击Dialog窗体中的加入生词本按钮选择将单词加入个人生词本,以方便以后的学习记忆。也可以点击空白处或者Dialog窗体的外面取消保存。

2.4  文章单词提取模块

由于程序不具备单词识别的功能,而要处理的文章会以字符串的形式保存,所以用空格以及其他字符分割符,将字符串分割为若干小字符串,这些小字符串即为单个单词。

当用户需要提取文章中的单词时,读取EditText,将用户要提取单词的文章保存为字符串,实例化Article2Words对象传入文章字符串。

在Article2Words对象中,首先调用splitWord()方法将括号、下划线、双引号等无关字符全部替换成空格,并根据空格进行分割字符串,将结果保存在rawWords数组里,然后调用countWordFreq()方法统计单词,利用Set集合内元素的唯一性除去重复单词。文章单词提取流程图如图4所示。

3  結  论

本文所实现的英语学习APP主要研究基于艾宾浩斯记忆算法,科学地制定单词复习计划,本地SQLite数据库和联网相结合的方式既可以节省流量和内存空间,又可以准确高效地查询单词,生词本功能方便用户以后的学习,句子翻译功能基于百度提供的句子翻译API进行翻译,根据用户的设置推送适合用户的英文读物。今后还会对其进行优化,争取将本英语学习软件上架到应用商店,成为一款可以实际应用、用户体验极佳的Android应用。

参考文献:

[1] 吴珊.Android的系统及应用的架构 [J].电子技术与软件工程,2019(3):148.

[2] 张红.记忆软件SuperMemo UX在高职高专院校词汇教学中的有效性研究 [J].考试周刊,2013(11):94-95.

[3] 李琳,冯诗涵.“互联网+”背景下英语学习类APP记忆模式研究 [J].海外英语,2019(4):129-130.

[4]周子愉.基于艾宾浩斯遗忘曲线的个性化推荐算法 [J].电子制作,2018(Z2):83-84+69.

作者简介:安辉(1995.04-),男,汉族,山东日照人,本科,研究方向:计算机科学与技术;通讯作者:冯君(1980.07-),女,汉族,山东滨州人,副教授,硕士,研究方向:软件技术与理论、移动开发、智慧教育。