APP下载

基于安卓的校园服务系统设计与实现

2014-10-10刘红英

电脑知识与技术 2014年24期

摘要:开发一款基于安卓平台的校园信息服务客户端,该客户端可实现学生登录、校园公告、教务信息查看以及校园地图功能。客户端主要通过HTTP协议向服务器发送消息,并通过Jsoup技术对服务器返回的消息进行解析;同时调用三方提供提供的街景地图服务,具有良好的用户体验性。

关键词: Android; 校园服务系统; Jsoup; HTTP协议; HTML解析

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)21-5673-05

The Design and Implementation of Campus Service System Based on Android Platform

LIU Hong-ying

(Nanjing University of Science and Technology Zijin College, Nanjing 210046, China)

Abstract: Developing an APP based on android develop platform. The APP provides the function of Login、View information as well as campus map. Client sends message to the server though HTTP protocol, Using Jsoup technology, the information returned by the server was analyzed. At the same time, the APP call the three party API to provide Street View mapping service. It have a good user experience.

Key words: Android; campus service system; Jsoup; HTTP protocol; HTML analysis

随着通信技术的不断发展,人们对信息化服务的要求越来越高。而数字化校园的建设不容忽视,大部分校园服务系统是基于web网络开发出来的[1],但是基于智能手机端的校园系统建设仍然不足,本系统开发了一款基于Android平台的校园服务系统,面向用户主要为学生,学生可登陆该系统查看个人成绩、课表安排等信息,同时校园最新公告也可以进行查看,此外还提供了校园地图功能,可对当前位置定位以及查看街景地图。

1 相关技术

1.1 Android平台简介

Android系统由Google公司开发,一上市便获取很大市场。Android系统基于Linux系统,采用Java语言进行开发,它层次分明,主要包括三部分:中间件、用户界面以及应用软件,三层之间耦合性低,当下面一层发生改变时,不需要改变上层应用,只需改变下层代码即可[2]。

Android应用程序主要包含四大组件:Activity、Service、Content Provider和BroadCastReceiver。在开发过程中,并不是每一个开发的APP都包含这四个组件,在本系统中主要用到前三个组件[3]。上述四个组件要进行配置时需要借助于AndroidManifest.xml配置文件,该配置文件是每一个APP开发过程中最重要的文件之一,相关组件的定义,组件的功能以及应用程序需要的权限都在此全局配置文件中定义。

1.2 HTTP协议简介

HTTP协议是网络中的重要协议之一,该协议是典型的C/S模式,用于本地客户端与万维网服务器传输超文本,此协议主要包含两部分:请求和响应。客户端发送相关请求,请求方法包含Put、Post、Get等方法,本系统主要用到Post和Get方法,服务器接收到客户端的请求之后,响应相关信息。

1.3 Jsoup技术简介

Jsoup主要用于文本解析,是Java中用来操作HTML文件的第三方类库[4]。该技术可直接通过URL地址或者HTML格式的文本进行解析,它提供了功能完善的API接口,开发者只需要根据API文档进行调用即可,可以根据节点名称或者HTML元素中的id来获取需要的消息,Jsoup中像getElementById等方法跟JavaScript中的功能完全一致,使开发者调用更方便。

2 系统分析与设计

2.1 整体功能

本系统主要包含四部分:学生登录,最新公告,教务信息,校园地图。功能设计图如图1所示。

学生登录:通过对学校网站服务器的访问,可以获取相关成绩和课表。

最新公告查询:通过对学校网站最新公告模块的解析,查看学校的最新公告信息。

教务信息查询:通过对学校网站教务信息模块的解析,可查看学校的教学安排。

校园地图:通过对百度地图和街景地图的二次开发,可查看自己所在的位置。

2.2 系统分析

从实现上来看,该系统主要通过手机客户端与服务器交互,手机客户端向服务器发送请求,服务器响应消息,客户端得到消息之后通过Jsoup解析方法处理信息并将之显示。如图2所示。

由上述可知,在本系统中主要有两大模块:一是界面显示模块,二是数据处理模块,其中数据处理模块包括获取服务器数据和对数据进行解析

2.2.1界面显示:

本系统中主要有四个界面:主界面,学生信息显示界面,公告和教务信息界面,地图界面。其中公告和教务信息界面是类似的,在学生信息显示界面必须提供一个学生登录窗口,登录窗口以Dialog形式展现。

除了activity.main之外,还需要其他的activity,AndroidManifest文件中部分代码如下:

2.2.2 登录实现

不管是学生登录界面还是公告信息展示界面,都必须要先获取所需信息。一般客户端从服务器端获取数据分为两种:一种是调用服务器端提供的API,另外一种是获取服务器端提供的HTML文件,系统采用后者。

学生通过用户名和密码登录之后,通过HTTP协议中的Post请求方法向服务器发送请求,服务器返回Cookie,验证账号和密码正确之后返回响应信息。最终利用Jsoup解析获取信息。信息以ListView显示在界面中,ListView条目显示需要Adapter提供服务。

由客户端向服务器发送Post请求发送部分代码如下:

name = new String(name.getBytes("GBK"), "ISO-8859-1");

HttpClient client = new HttpClient();

client.getHostConfiguration().setHost(partUrl, 80);

PostMethod post = new PostMethod(url);

NameValuePair submit = new NameValuePair("Submit", "提交");

NameValuePair tgname = new NameValuePair("tgname", name);

NameValuePair tgpwd = new NameValuePair("tgpass", password);

post.setRequestBody(new NameValuePair[] { submit, tgname, tgpwd });

client.executeMethod(post);

Cookie验证成功之后,服务器返回HTML文件,接下来将获取的数据以流的形式读入到一个buff缓冲字节数组中,部分代码如下:

byte[] buff = Tool.readInputStream(post.getResponseBodyAsStream());

html_file = new String(buff, "GB2312")

接下来客户端利用Jsoup对html_file解析出需要的数据,将数据通过ListView显示。

2.2.3 Jsoup进行数据解析

在整个客户端开发过程中,Jsoup解析是关键,学校服务器无法返回XML或者Json文件,只能通过分析HTML文件的方法获取所需要的信息。以公告信息为例,服务器返回的网页源代码HTML文件如图3所示。

图3 服务器返回HTML部分信息

通过对源代码分析可知, HTML文件中的关键信息以DataList为节点,DataList下面的子节点皆为公告信息条目,为此只需要解析到DataList以及下面的子节点即可,这里根据显示的信息需要Title以及Url。部分核心代码如下:

Document document = Jsoup.parse(new URL(url), 10000);

Element element = doc.getElementById("DataList");

Elements tags = element.getElementsByTag("a");

for(Element ele : tags){

String aText = ele.getElementsByTag("a").text();

String aLink = ele.getElementsByTag("a").attr("href");

String href = partUrl + aLink.substring(2);

Map map = new HashMap();

map.put("title ", aText);

map.put("url ", href);

list.add(map);}

用户使用过程中有可能出现没有网络的情况,因此处理过的数据将被保存到本地的一个文件中,离线情况下可调用显示该文件。

2.2.4 地图显示

二维地图的显示主要通过调用百度地图API,通过MapView以及BMapManager类,前者用于添加百度地图控件,后者是加载地图的引擎[5]。

通过这两个类实现所需功能,例如:地图缩放功能,部分代码如下:

mapView.setBuiltInZoomControls(true);

mapController = mapView.getController();

mapController.setCenter(geoPoint);

mapController.setZoom(n);

街景的显示一般有两种形式,一种是利用经纬度生成GeoPoint获取街景,另一种利用街景点的ID获取街景,在本系统中利用经纬度获取街景。

本系统通过一个StreeGeoData类实现对数据封装,类里面定义了经纬度以及缩放比例等。在StreetOverLay类继承了ItenmizedOverLay类,通过对StreeGeoData封装数据的处理,可以实现显示不同的图层图片,并可以对图层自定义,包括标记兴趣点等。最后通过StreeView中将街景显示。StreetView类继承于StreetViewListener,实现图层的监听,包括获取图层,销毁,启动,停止等方法。部分代码如下:

public StreetGeoData(int x, int y, Bitmap marker, Bitmap markerPressed, float offset){

this.latE6 = x;

this.lonE6 = y;

this.marker = marker;

this.markerPressed = markerPressed;

this.heightOffset = offset;

this.uid = “”;}

public ItemizedOverlay getOverlay() {

if (overlay == null) {

ArrayList geos = new ArrayList();

overlay = new StreetOverlay(geos);

overlay.populate();}

return overlay;}

此时通过向Handler发送数据来显示图片,Handler处理如下:

mHandler = new Handler() {

public void handleMessage(Message msg) {

mImage.setImageBitmap((Bitmap)msg.obj);}};

3 系统实现

系统界面简洁,主界面上方做出跑马灯效果介绍学校概况,主界面如图4所示。

图4 主界面显示图

3.1学生登入模块实现

登录模块主要实现的功能:

1)连接网络,输入账号、密码验证,如果不成功则提示;

2)登录成功以后可查看相关成绩和课表信息;

3)响应时间较快。

学生查看成绩如图5所示。

3.2教务公告信息实现

教务信息和公告信息的获取方法非常类似,本模块主要实现功能如下:

1)有网的情况下,通过网络连接显示信息;

2)无网络的情况下,从缓存调取显示信息。

教务信息显示如图6所示:

3.3 校园地图实现

本系统实现了二维地图显示如图所示,功能如下:

1)可通过当前位置显示周边地图;

2)可对地图进行缩放设置。

通过点击查看街景地图可转换到街景查看,如图7所示。

4 总结

基于手机客户端的数字化校园普及仍需加大力度,本文以Android系统为开发平台,实现了一款校园助手系统,通过该系统可方便学生随时随地查看信息,系统中数据获取和解析的方法具有一定参考性。有关地图实现部分,如何在地图上添加标记以及为校内建筑物重新命名是下一步要解决的问题。

参考文献:

[1] 林永兴,李晓蕾. 基于Android的校园助手手机应用程序的研究与设计[J]. 高科技产品研发, 2012(3):60.

[2] 李刚. 疯狂Android讲义[M].北京:电子工业出版社.2011.

[3] 姚昱 .基于Android的移动学习终端平台的开发与研究[D].长沙:中南大学,2008.

[4] Jsoup: Java HTML Parser[EB/OL].http://jsoup.org.

[5] 百度地图API[EB/OL].http://developer.baidu.com/map.