0 引言
目前,随着数字化校园工作的不断深入,各校都在积极研究数字化校园的各项应用,其中教学资源库的建设是一个重点。已有的资源库应用一般都采用B/S架构,各类资源都放置在服务器上,在PC端通过浏览器实现用户的接入。用这种方式在移动设备上进行接入时会存在一些弊端,如操作繁琐、可交互性差、数据流量大等。这些情况以及移动智能设备的大量普及,使得开发教学资源库移动客户端系统变得非常迫切。本文设计并实现了一个基于Android平台的教学资源库移动客户端系统,用户通过该系统可以在Android智能终端上实现课程资源学习、接收新资源信息、视频点播、在线练习、用户交流等功能。
1 系统的架构设计
本系统采用C/S架构设计,重点在于移动客户端的开发,学校的服务器端采用的是.NET+IIS+SQLServer的配置,考虑到安全性及数据量的问题,在远程数据库的连接上,Android客户端通过WebService这个桥梁来访问SQLServer,获得相应的XML格式数据,并通过Android自带的PULL解析器解析出相关数据显示在客户端UI界面中。
客户端模块在功能上主要分为用户登录、我的通知、在线学习、视频点播、在线练习、资料下载、师生互动、用户交流和密码设置等。为了程序的简洁,移动客户端未设置教学资源库的管理功能,管理员账号只能通过PC端登录实现管理功能。客户端在业务逻辑的实现上主要由以下几个类构成:WebService操作数据库类DBOperation、Android连接WebService类HttpConnSoap、XML数据解析类XMLParser类以及相关的界面类UserLogin、CourseView等。
本移动客户端的基本架构如图1所示。
2 系统主要模块的实现
2.1 服务器端接口ResourceWebservice
一般的C/S架构程序在数据库连接上都采用直接连接,对于移动客户端的开发带来的问题是数据流量大、安全性不好等问题。本系统在数据库连接及操作上通过自定义的服务器端接口程序ResourceWebservice来操作教学资源库SQLServer数据库Resource,获得数据并转换成XML格式。由于采用了WebService方式来进行中转操作,Android客户端中所有的数据库操作都必须在ResourceWebService中写成相应的接口函数,ResourceWebService中获得指定资源学习内容的接口函数示例如下:
[WebMethod(Description="获取指定资源学习内容")]
public string[]selectStudyInfo(int courseid,int contentid)
{
return dbOperation.selectStudyInfo(courseid,contentid).ToArray();
}
这里DBOperation是一个操作数据库的类,所有对教学资源库的数据库操作都写在这个类中,其中包括在线学习模块的查询接口、师生互动的更新接口等,使用时实例化DBOperation类,然后即可直接调用。
2.2 Android调用ResourceWebService
服务器端的WebService接口函数配置好之后,在Android中就可以通过调用它们达到操作数据库的目的,但Android系统自带的SDK中并没有提供调用WebService的类库,本系统在开发过程中使用了适合手机客户端的KSOAP2,并设计了较为通用的getWebService方法,将调用得到的返回数据先存放在数据流中,然后进行XML解析。getWebService方法设计如下:
public InputStream getWebService(String methodName,ArrayList<String> ParamList,ArrayList<String> ParValueList);
其中methodName是调用的接口函数名称,ParamList是调用的参数列表,ParValueList是参数值的列表。以调用“获取指定资源学习内容”接口为例:
String methodName="selectStudyInfo";
ParamList.add("courseid");ParamList.add("contentid");
ParValueList.add("010");ParValueList.add("005");
InputStream inputStream=ResourceWebService.getWebService(methodName,ParamList,ParValueList);
2.3 XML数据解析类XMLParser
当得到返回数据的数据流后,需要进行XML格式数据的解析,本系统使用Android自带的PULL解析器,解析速度快,简单易用,非常适合手机、平板电脑等内存有限的小型移动设备。XMLParser类的解析过程为设定开始元素和结束元素,当某个元素开始时,调用parser.nextText()方法从数据流中提取所有数据,当解释到一个文档结束时,自动生成EndDocument事件。主要代码如下:
public ArrayList<StudyInfo>paraseStudyInfo(InputStream inputStream){
XmlPullParser parser=Xml.newPullParser();
int eventType = parser.getEventType();
while(eventType!=XmlPullParser.END_DOCUMENT)
{……
eventType=parser.next();
}
}
2.4 消息推送模块
该模块使用了一个开源项目androiddpn,通过XMPP协议实现了客户端与服务器端的长久连接,将客户端源代码包androidpn-client-0.5.0.zip导入到移动客户端项目后,设置raw/androidpn.properties文件,配置客户端的apiKey、xmppHost、xmppPort这三个参数就可以接收来自服务器端的推送消息。在服务器端,只需运行服务器端源代码包androidpn-server-0.5.0-bin.zip中的run.bat,就可以直接搭建好消息推送服务。
当资源库管理者更新了新的资源,如课程教师更新了课程内容后,可以通过浏览器打开Android Push Notification Admin Consle页面,将更新消息手动推送到设定了该课程的用户手机上,消息会直接显示在用户屏幕上,也可以通过“我的通知”模块进行查看。
2.5 视频点播模块
视频资源是教学资源库建设的重点,用户通过远程视频点播可以再现教师课程教学的重点,教学资源库中所有的视频资源均采用流媒体格式存储在服务器端,本系统移动客户端未开发专用的视频播放器,而是通过流媒体文件的URL地址调用本地应用来进行视频资源的点播。其主要代码如下:
Intent svideo=new Intent();
svideo.setAction(Intent.ACTION_VIEW);
svideo.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Uri uri=Uri.parse(url);//这里url表示流媒体文件在服务器端的地址
svideo.setDataAndType(uri,"video/*");
startActivity(svideo);
3 系统的运行环境及运行实例展示
教学资源库服务器端配置为.NET4.0+IIS7.0+SQLServer2005,移动客户端Android运行环境要求在2.3.3版本及以上,客户端和服务器端通过WebService中转连接。本系统在Android模拟器及Android真机中信U793、联想A850、华为C8816等一般配置机型上均可以流畅运行,能随时随地通过移动终端获取教学资源库中的各类信息,进行课程内容在线学习、师生互动、视频点播、用户交流等操作,运行效果如图2所示。
4 结论
移动设备的普及使得移动应用的开发成为一种趋势,本文设计并实现了基于Android平台的教学资源库移动客户端系统,并作为江苏省职业技术教育学会研究课题“Web2.0平台下软件技术专业教学资源信息化的实践研究”的移动端研究内容已在学生中进行了初步试用,极大地提高了学生的学习兴趣,同时也出现了如师生互动、消息推送等方面的一些不足,随着新技术的不断发展这些不足将得到改进,以推动移动应用开发的不断前进。
参考文献
[1] 陈文,郭依正.深入理解Android网络编程[M].北京:机械工业出版社,2013.
[2] 余志龙.Google Android SDK开发范例大全[M].北京:人民邮电出版社,2011.
[3] 初雅莉,陈昌稳.基于Android的智慧校园手机系统[J].微型机与应用,2013,32(15):15-17.
[4] 仲伟,吴晋.基于XMPP协议的校园实时推送系统的研究[J].武汉大学学报(理学版),2012,S1:305-308.
[5] 郑洁琼,陈泽宇.3G网络下移动学习的探索与实践[J].开发教育研究,2012(1):159-162.
[6] 吕伟.基于Android的移动学习平台的设计与实现[D].南京:南京师范大学,2013.