基于Android的软件“问知网”的设计与实现

2018-02-03 05:43张梦妮赵玲杜岚姜枫申静波
电脑知识与技术 2018年2期
关键词:Android平台在线学习应用程序

张梦妮+赵玲+杜岚+姜枫+申静波

摘要:该文充分分析了大学生学习现状,并在Android平台下设计了一个软件“问知网”,帮助大学生学习。并对该软件平台设计、实现功能、数据库设计思想等进行了详细说明。该软件应用了第三方框架,网络包括OKHTTP框架、Glide框架。数据传输格式为Json,使用Gson框架解析其内容。Android控件方面使用了大量自主开发的控件,用以适应需求。在整个图片缓存方面,使用了自主开发的图片缓存框架,以缓存和压缩的思想对图片进行了处理,用以节约内存。该软件开发出来后为大学生提供了良好的学习平台。

关键词:Android平台;在线学习;应用程序

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)02-0049-04

Design and Implementation of “Ask Will Know”Based on Android Platform

ZHANG Meng-ni; ZHAO Ling; DU Lan; JIANG Feng; SHEN Jing-bo

(College of Computer and Information Technology , Northeast Petroleum University, Daqing 163000, China)

Abstract: This paper analyzed the current situation of college students learning and introduced the process about designing a software named "Ask Will Know" on Android platform to help students learn. This paper also gave an instruction on Platform design, implementation of functions and database design ideas in detail. "Ask Will Know" used a third-party framework that includes the OKHTTP framework and the Glide framework. Data formatted as Json, using the Gson framework to parse its contents. The software used a lot of self-developed controls to meet the demand. In terms of the entire image cache, the reason why using self-developed picture cache framework and the idea of using cache and compression to handle image was to save memory. When the application got developed , it provides a good learning platform for College Students.

Key words: Android platform; learning online; application

1 背景

隨着网络世界的飞速发展,手机,ipad等手持移动智能端日渐普及,学生获取学习资源更加方便,获取途径也变得越发广泛。以互联网应用为主要代表的网 络和信息技术支持下的应用与服务已经深入到社会生活的方方面面,正在深刻 改变着经济和社会的组织方式和发展方向[1] 。社交网络服务SNS(Social Network Service)[2]的流行使得大量移动APP涌现。近几年,一类帮助中小学生解决课后习题以及作业的软件出现,获得了其所面向学生的极力追捧。现有的软件都仅是针对中小学生,但有现象显示,目前大部分的在校大学生也存在着上课效率低下,课后习题无法独自解决的问题。由此可见,大学生也需要一款专门面向他们的软件,解决习题难题,巩固课程知识。

本文描述了如何在Android平台上采用三层架构,将系统的界面及业务数据分离来更方便地进行软件的设计与开发,搭建一个学生的在线学习平台,帮助大学生更好的进行课后学习。

2 Android系统简介

Android 软件平台主要由五部分构成,它们分别是:关键应用程序、应用程序框架和组件、C/C ++ 函数库、Java 程序运行环境、优化了的 Linux 内核[3]。Android系统是一个巨大的平台,由于应用的日益丰富,使得终端用户不断地发展和壮大,越来越多的设计研究和开发都在Android平台上进行[4],各个公司都可更改它的源代码来体现自己的产品特色。也因为如此,2017年Android的市场占有率达到了80%。同时,它的开源导致了Android的应用千变万化,可扩展性极强。在Android5.0之后,Google提出了Metial Design,并提供了大量的控件。 “问知网”正是使用了这样的设计思路并运用了最新的Android技术,这些新特性使“问知网”的流畅水平达到了一个新的高度。

3 数据库设计思想

对已创建的数据库和库中的表,应用程序在运行过程中能对表的内容进行增、删、改、查询、统计、打印等操作[5]。数据库系统的设计使用了E-R关系图辅助整个数据库的设计。根据功能,该平台的数据库的设计思路是:用户基本信息表、试题集分类表、试题集信息表、基本题目信息表、用户题目关联表、视频直播表以及历史视频表。endprint

用户在直播时需要将自己的ID号作为直播的关联信息,因此用户基本信息表的设计如表1所示:

在程序中查询数据关系里的数据时,可通过试题集的ID找到关联的基本题目,然后将这些数据通过json字符串返回给移动端。

用户有时还需查看自己的历史题目,因此还需一张表来维护相关的数据,如表5所示:

最终通过数据处理得出一种高效数据操作方式,提高Android平台下数据库的使用效率[6]。

4 平台的设计与实现

4.1 平台界面

界面底部是RadioGroup,内部包含五个RadioButton,用于用户选择页面。向上是一个自定义ViewPager,用于填装五个Fragment。顶部是一个ToolBar,为Android中的导航头部。UI层代码实现相关的UI层接口,这些接口会在业务逻辑层中被调用,换句话说,只要UI层实现了这些接口,不管是什么样的UI层代码,业务逻辑层的代码都不会发生改变。一个UI层中的列表适配器代码一般都会达到上百行,如果再将业务逻辑放入此处,那么这里的代码就会变得极其臃肿。因此整个软件采用了MVP三层架构,将UI,业务逻辑,数据访问三者分离开来,使得整个项目的层次特别清晰[7]。

4.2 平台实现的主要功能

1)用户在平台注册并登陆后,可选择记住密码方便下次登录。本平台还提供找回密码的功能。

2) 本平台提供用户提问的功能。通过拍照将自己的题目上传至平台,再对问题进行描述,发布后便可等待其他用户回答了。相应的,用户也可以回答其他用户的问题,以此来赚取积分参与活动。

3) 本平台支持用户在线练习。选择对应的课程后,用户便可点击开始练习来巩固知识了。

4) 本平台为用户提供收集错题的功能。以往在线练习遇到的错题都会以详细的解释出现在错题本里。用户还可对错题本进行增删改等操作。

5) 本平台支持教师用户上传自己的教学视频,将同学们上课没听懂的知识点复述一遍,帮助学生消化吸收。

6) 本平台支持直播功能。无须空教室以及大量时间,教师可在课后为同学们直播答疑,给大家带来方便。

7) 本平台在主界面会实时更新一些关于考研的动态以及新闻,给要考研的学生们提供更多信息以作参考。

4.3 平台架构图

4.4 平台的实现

1) “问知网”设计为“客户端—服务端—数据层”三层结构模式[8] 。登录注册使用腾讯云作为后台,方便为直播服务提供用户数据。实现通过将用户在文本框中的字符串提取出来并经过一定的业务逻辑判断,然后将其封装成为Json字符串格式。通过OKHTTP框架以post方式将其提交给服务器具体的业务逻辑为:

String username =getContentFromEditeText(et_username);

String psd =getContentFromEditeText(et_psd);

String userFormJson =GsonUtils.createUser(username,psd);

Int state=MyHttpUtils.login(userForm);

if(state==SUCCESS){

showContentView();

}else{

showErroInfor();

}

通过getContentFromEditeText(et_username)方法可以获取et_username中的内容,通过GsonUtils.createUser(username,psd)可以封装出相关的Json字符串;通过MyHttpUtils.login(userForm)可以将相关的内容提交给服务器,并获取返回码,其内部封装了OkHttp框架的相关流程。

2) 用户题目的上传和登录的流程一样,不过此处上传还包含了图片,为了节省用户流量,APP先使用Android中的BitmapFactory对图片缩放30%,然后再将图片通过OkHttp框架传到服务器中。图片的压缩业务逻辑为:

BitmapFactory.Options newOpts = new BitmapFactory.Options();

newOpts.inJustDecodeBounds = true;

Bitmap bitmap = BitmapFactory.decodeFile(srcPath, newOpts);

newOpts.inJustDecodeBounds = false;

newOpts.inSampleSize = calculateRadio(bitmap);

bitmap = BitmapFactory.decodeFile(srcPath, newOpts);

在以上的操作中,srcPath是上传图片的路径,先读取图片的基本信息,这里的关注点是大小,然后根据图片的大小设置其压缩比例,再将压缩后的图片提取出来得到新的图片。

3) 题目的练习功能

當用户点击进入该模块时,首先判断用户是否登录,若未登录则进入登录页面,反之直接进入可选题目列表。列表使用了最新的RecyclerView作为题目的列表控件,并结合其特点封装了分页功能。

移动端先通过OKHTTP框架请求服务器,服务器再以Json的格式将数据返回给移动端。然后移动端对RecyclerView进行数据适配,数据适配使用了适配器设计模式,其工作模式可以使用下面的代码概括:endprint

Class ListAdater extends BaseAdater{

Int getItemCount();

View createView();

Object getItem();

void onBindView(Bean b);

}

getItemCount()方法可获取列表长度,createView可创建先关控件,getItem獲取相关数据源,onBindView将数据源和控件连接起来。这个适配器结合着数据,就可以将题目显示到页面上了。

当用户提交答案时,服务器端的Web程序会比对数据库中的正确答案,并将统计结果保存到用户的练习结果表中,同时将统计结果返回给移动端,移动端接受到统计结果时,将数据展示给用户。整个页面使用ConstraintLayout作为根布局,没有布局的重叠,性能相当良好。

4) 用户的错题本功能。由上述功能可知,在用户练习时,服务器便将相关统计数据放入了数据库中,由于本文的重点是移动端的开发,因此不赘述相关数据元的设计。这里的开发与练习功能相似,都是使用了RecylerView作为列表。

5) 视频流的使用。“问知网”使用腾讯云作为自己的视频推流后台,使用RTMP协议进行推流,在移动端使用腾讯云提供的TXLivePlayer播放直播视频。该控件的使用类似于Android原生态中的MediaPlayer,对视频的播放操作做了很多优秀的封装。这个控件的使用过程的代码描述为:

mTXCloudVideoView=obtainView(R.id.tx_live_view);

mTXLivePlayer = new TXLivePlayer(this);

mTXLivePlayer.setPlayListener(new MyITXLivePlayListener()

mTXLivePlayer.setPlayerView(mTXCloudVideoView);

mPlayUrl = getIntent().getStringExtra(Constants.PLAY_URL);

if (mPlayUrl != null)

mTXLivePlayer.startPlay(mPlayUrl);

从布局文件中获取控件mTXCloudVideoView,之后创建TXLivePlayer对象mTXLivePlayer,然后为mTXLivePlayer配置监听器,在监听器中主要监听了视频接入成功的时刻和失败的时刻,在失败时弹出提示的对话框,成功则将视频流接入。然后获取视频播放的URL,通过URL接入到先关的视频流。

6) 历史视频。这里使用的是FLV协议,同时也是FLV格式,在这一部分中也同样使用了腾讯云提供的视频流,控件的使用与直播功能大同小异。

7) 动态消息推送功能。使用腾讯云提供的消息推送功能,定期将相关的广告链接推送给移动端,移动端接收到之后,会弹出Notification弹框,点击之后进入相关的网页,这利用了网页的后台可以随时修改的特点。网页使用WebView进行加载,同时使用了其javascript接口监听了相关的图片,在js中将所有图片的URL提取出来形成一个列表,然后以List的形式返回给Android。

4.5 图片缓存

在APP中浏览图片会消耗较多流量,影响加载速度,因此较多APP选择先向用户展示缩略图,根据用户需求再加载原图[9]。如图3所示:

在Android中,框架为开发者提供了LruCache管理相关的缓存,而在图片加载时的思想可由图4所示:

通过URL访问cache,如果命中,直接拿出图片,否则直接访问服务器,获取图片并压缩,然后将其URL和压缩后的图片以键值对的形式存放到缓存中。

5 结束语

“问知网”是应各种需求而产生的新型学习平台。Android 手机应用程序开发是一项复杂的工程,本文研究了在 Android 系统下,基于MVP架构使用Java 语言设计和开发软件。“问知网”的开发与应用,为实现“随时、随地、随身”学习搭建了良好的学习平台,对于打造学习型社会、构建终身学习体系[10]具有重要的现实意义。验证了该平台良好的实用性,也为广大的 Android 开发者提供一个参考。

参考文献:

[1] 王宇, 吴炜鑫, 王兴伟. “互联网+”下高校信息化建设模式的探索与研究[J]. 计算机应用与软件, 2016, 33(11):41-45.

[2] 乔秀全, 杨春, 李晓峰, 等. 社交网络服务中一种基于用户上下的信任度计算方法[J].计算机学报, 2011, 34(12):2403-2413.

[3] 刘荣华, 张扬, 聂颂, 等. Oracle 数据库管理与应用系统开发[M]. 北京: 人民邮电出版社, 2005.

[4] 桑楠, 赵丽, 郭文生. 多核平台嵌入式浏览器并行机制的研究与设计[J]. 电子科技大学学报, 2014, 4(43):400-404.

[5] 曹计昌, 杨月芹. PowerBuilder应用程序在SQL Anywhere数据库中动态创建表的方法[J]. 微型机与应用, 2001, 20(10):53-54.

[6] 周巍. Android平台下基于SQLite数据库的手机游戏设计与研究[D]. 昆明: 昆明理工大学, 2011.

[7] 温昱. 一线架构师实践指南[M]. 北京: 电子工业出版社, 2009.

[8] 熊水柔. 基于Android系统的移动学习平台的设计与实现[D]. 北京: 北京邮电大学硕士论文, 2012.

[9] 王菁, 牛利杰. 面向移动端基于社交关系的图片缓存替换算法[J]. 计算机工程与科学, 2017, 39(2):267-274.

[10] 盛建荣. 开放大学背景下基层电大移动学习平台构建研究——以金华“掌上电大”平台开发为例[J]. 中国远程教育: 综合版, 2014(13):83-88.endprint

猜你喜欢
Android平台在线学习应用程序
删除Win10中自带的应用程序
基于Android平台软件开发技术研究
信息化环境下高职英语教学现状及应用策略研究
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序