基于android属于什么软件Android的软件“问知网”的设计与实现
作者:张梦妮 赵玲 杜岚 姜枫 申静波
来源:《电脑知识与技术》2018年第02期
作者:张梦妮 赵玲 杜岚 姜枫 申静波
来源:《电脑知识与技术》2018年第02期
摘要:该文充分分析了大学生学习现状,并在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关系图辅助整个数据库的设计。根据功能,该平台的数据库的设计思路是:用户基本信息表、试题集分类表、试题集信息表、基本题目信息表、用户题目关联表、视频直播表以及历史视频表。
用户在直播时需要将自己的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 =ateUser(username,psd);
Int state=MyHttpUtils.login(userForm);
if(state==SUCCESS){
showContentView();
}else{
showErroInfor();
}
通过getContentFromEditeText(et_username)方法可以获取et_username中的内容,通过ateUser(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作为题目的列表控件,并结合其特点封装了分页功能。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论