基于Android的高校学习App设计与应用

2018-10-18 10:33叶为正黄颖杰李晶
现代计算机 2018年26期
关键词:服务端文档客户端

叶为正,黄颖杰,李晶

(中山大学新华学院管理学院,东莞 523133)

Android SDK;高校学习;云平台

0 引言

随着以智能手机和平板电脑为代表的移动设备迅速普及,移动教育已经成为当今教育领域发展的新趋势,而大学教育更强调的是课堂学习向课外学习的延伸,移动学习App恰好符合大学教育的这一特性,弥补了传统课堂教学的不足,进一步整合网络学习资源,开发一款基于Android平台的高校学习App,具有专业课辅导视频观看与下载、课程文档资料预览下载以及直播功能,让大学生能够更加深入地学习专业知识[1-4]。移动教育App在各个教育领域有着广泛的应用与发展前景,因此笔者认为,采用各种云服务和SDK组合开发,能够针对不同教育领域与教师需求,快速开发出简单易用、运行稳定的移动App。

1 相关技术介绍

1.1 百度云

百度云音视频直播LSS(Live Streaming Service)是一个直播PaaS服务平台,LSS提供直播“采集端-服务端-播放端”全套定制开发能力,采集端从直播源获取直播推流送到LSS服务端,LSS服务端完成直播流的处理,播放端进行播放。

百度VOD(Video On Demand)是百度云提供的面向音视频点播的PaaS服务平台,为开发者提供音视频文件的存储、管理及播放服务。

百度云文档服务DOC(Document Service)是百度云提供的面向文档处理的PaaS服务平台,为开发者提供Office、WPS等多种格式的文档存储、管理及在线浏览服务。

1.2 BBmmoobb后端云

Bmob后端云是全方位一体化的后端服务平台,无需再造应用后端服务,轻松拥有开发中需要的各种后端能力。它提供可视化的云端数据表设计界面,轻松建库建表。支持10种不同数据类型存储,例如字符串、整型、数组等[5]。

2 平台系统结构设计

本平台采用C/S模式,前端也就是客户端采用An⁃droid应用程序的方式,后端采用Bmob云数据库。前端通过Bmob云数据库提供的API接口进行数据交互,使用Struts2+REST API+JSP搭建后台管理系统,管理员可以直接通过后台管理系统对Bmob云数据库进行数据的管理。

客户端采用Android平台,包括登录注册、在线直播、辅导视频以及文档资料等模块。客户端与服务器采用HTTP协议通信,数据通信的格式是JSON格式。前后端通过调用Bmob SDK相关访问接口以及回调接口即可实现数据的交互,进而完全消除开发者编写服务器代码以及维护服务器的操作。平台系统结构设计如图1所示。

图1 高校学习平台系统结构图

3 平台功能模块设计

Android客户端模块设计:用户通过登录或者注册进入到App时,首先会进入到首页,首页主要有两个功能:一个是推荐课程轮播图片,另外一个是官方公告。通过底部导航用户可以进入到课程页面,该页面主要包含三个模块:在线直播、辅导视频学习和文档资料。其中视频课程和文档资料可以下载到本地,在手机不联网的情况下也可以随时随地进行学习,本地学习与在线学习相结合更加体现了移动学习随时随地的特性。

图2 平台功能模块设计

4 系统的数据库设计

在设计该在线学习系统时,需要考虑到对于不同数据采用不同的存储方案。如在存储登录的用户名和密码时采用SharedPreferences,主要用于保存应用的一些常用配置,虽然整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少。本项目主要的数据存储在Bmob云数据库上,具有低成本,除去复杂的后端开发。数据库表有MyUser用户信息表、Video录播信息表、ZhiBo直播信息表、Doc文档信息表、Chat直播互动表、Banner首页图片轮播信息表等,由于每个业务之类均没有联系,故每个表都是单表。

5 平台功能设计与实现

5.1 关键技术

高校学习平台开发主要包含两个部分:Android客户端和Java Web后台服务端。客户端通过Bmob提供的API接口进行客户端与后端云的数据交互,服务端通过Bmob提供的REST API对后端云数据库的数据进行管理[10]。

5.2 登录模块

用户在使用该平台时,需要输入用户名和密码,若是第一次使用该平台,则需要进行注册。App通过调用BmobUser类的signUp和login方法,将用户输入的数据封装好并传输到Bmob后端云,通过回调函数判断注册、登录的成功与否。记住密码通过SharedPrefer⁃ences轻量级储存类实现,根据Context获取Shared⁃Preferences对象,利用 edit()方法获取 Editor对象,通过Editor对象存储key-value键值对数据,最后通过commit()方法提交数据。当用户忘记密码后,可以在忘记密码模块填入注册时所填写的邮箱,系统便会将重置密码的链接发送到用户邮箱。

5.3 直播与视频模块

本模块分为两部分:推流端与播放端,其中拉流端使用LSS推流SDK实现发起直播[6](如图3所示),采用RTMP协议将直播视频推流到百度LSS媒体中心进行处理。播放端同时适用于直播与辅导视频的观看与互动(如图4所示),采用RTMP/RTSP/HLS等协议进行拉流[7],用户登录到直播与视频系统后可以在直播页面选择其喜欢的直播间与视频进行学习,同时,辅导视频支持下载离线缓存(如图5所示)。在线互动功能通过创建BmobRealTimeData对象,然后调用start方法连接服务器,该方法中的ValueEventListener参数用于监听连接成功和数据变化的回调,当有数据变化时会通过onDataChange回调方法反馈到客户端,从而模拟实现在线实时互动功能。

图3 推流界面 图4在线播放与互动界面 图5视频缓存界面

5.4 文档资料模块

本模块借助百度云DOC面向文档处理的PaaS服务平台,为用户提供文档的预览和下载功能,学生通过阅读文档资料,巩固所学知识。用户通过底部导航进入到课程,切换到文档列表页面,可以选择其需要的文档进行学习(如图6所示)。文档列表主要通过query.findObjects()向Bmob云数据库发起请求,通过该回调方法完成数据的交互,当用户点击某个文档,通过In⁃tent传递文档的URL到WebViewActivity,进入该文档预览与下载页面,当用户点击下载文档时,项目中的下载方法通过继承AsyncTask实现下载。由于下载操作是耗时任务,所以将耗时操作写在doInBackground(Params...)方法中,确保在该方法中的所有代码都会在子线程中运行,任务一旦完成就可以通过return语句来将任务的执行结果进行返回(如图7所示)。文档缓存将通过 Environment.getExternalStorageDirectory().ge⁃tAbsolutePath()方法获得缓存路径,将缓存路径传入file,并创建 File file=new File(path);通过调用 File[]files=file.listFiles();实现本地缓存文件的查看与管理(如图8所示)。

5.5 Javaa WWeebb后台服务端

后台服务端主要用于对Bmob云数据库的数据进行管理。根据相关功能,后台服务端主要分为系统管理和审核管理两大模块。系统管理模块用于发布官方公告、增加直播频道、辅导视频以及资料文档。审核管理用于审核用户提交的辅导视频与资料文档,当管理员在后台同意审核请求,即可实现用户分享的辅导视频和文档资料的发布。

图6 文档列表界面 图7文档预览界面 图8文档缓存界面

通过Struts2+Bmob REST API+JSP架构实现服务端的功能[9],假设功能是:删除官方公告,当管理员点击删除操作时,首先请求首先被核心控制器(StrutsPre⁃pare AndExecuteFilter)拦截,核心控制器读取Struts.xml配置文件[8],根据用户发送的删除请求,找到处理删除业务的Action,在删除方法中,首先执行Bmob.initBmob(appid,restkey)方法完成管理员的权限的验证,实现了modelDriven接口的Action,可以在Action中直接获得例如HomeEntity对象,它会将ObjectgetModel()取得的HomeEntity放到 ValueStack中,通过 model.getId()获得相应的objectId参数,并将其填入Bmob.delete("Ho⁃meEntity",objectId)方法即可实现数据的删除,实现代码如下。其他功能的实现,只需要编写相应的REST API业务代码即可实现。

public String delete(){

initBmob();//初始化 Bmob

String objectId=null;

BSONObject where1=new BSONObject(Where.less(10));

BSONObject where=new BSONObject();

where.put("id",model.getId());

String result=Bmob.find("HomeEntity",where.toString(),0,50,"order");//获得该实体列表

JsonParser parser=new JsonParser();

JsonObject object=(JsonObject)parser.parse(result);

JsonArray jsonArray=object.getAsJsonArray("results");

for(int i=0;i< jsonArray.size();i++){

JsonObject subObject=jsonArray.get(i).getAsJson Object();

objectId=subObject.get("objectId").getAsStr-ing();

}

Bmob.delete("HomeEntity",objectId);//进行删除操作

return"toList";

}

6 系统测试与运行

该平台开发完成后,在小米5S手机(四核,高通骁龙 821,内存 3GB,5.15 英寸屏幕,Android OS v7.0)对各项功能进行了测试,客户端运行良好,可以实现正常登录、注册,直播、辅导视频的播放以及直播推流等功能,能够达到在线学习的功能[11]。后台服务端可以实现对Bmob云数据库的管理,能够对数据进行增删改查的操作。

7 结语

在本项目研究中,采用了MyEclipse和Android Studio开发了基于Android高校在线学习App,使用百度云SDK与Bomob后端云数据库,快速搭建了一个具有完整前后端的在线学习App,通过应用手机直播、视频辅导、分享文档资料等方式实现对课程教学模式的创新,充分利用该软件,有利于提高学生学习积极性,调动课堂与课下学习氛围,在学校课堂的实践中能够满足日常的直播教学需求,充分提升了互联网与教学的协同创新运用。

猜你喜欢
服务端文档客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
新时期《移动Web服务端开发》课程教学改革的研究
基于三层结构下机房管理系统的实现分析
基于三层结构下机房管理系统的实现分析
Word文档 高效分合有高招
媒体客户端的发展策略与推广模式
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat