APP下载

基于安卓的南邮通达掌上校园APP的实现

2018-09-14姚永明梅雨凯姚永瑞

软件 2018年8期
关键词:通达安卓校园

姚永明,梅雨凯,章 香,姚永瑞



基于安卓的南邮通达掌上校园APP的实现

姚永明,梅雨凯,章 香,姚永瑞

(南京邮电大学通达学院,江苏 扬州 225200)

《基于安卓的南邮通达掌上校园APP的需求分析》其中分析了设计这款 APP的功能和非功能需求,将功能需求分成了课表查询等七个模块,非功能需求四个模块。因此本文主要讨论如何实现上文中的各种具体功能。

南邮通达;掌上校园;APP;安卓;实现

0 引言

众所周知:软件=程序+数据+文档。安卓APP也不例外,APP各项功能的实现最重要的就是数据的来源,而南邮通达掌上校园APP的数据几乎全是爬取的,学习课业方面的数据(比如课程表,成绩等)来自学校的正方教务系统,学校的通知公告等信息来自学校官网。通过模拟学生登陆便可以获取到正方教务系统里面的数据和相关链接,模拟浏览器访问学校教务系统可以使用火狐浏览器中的插件(FireBug)或者HttpWatch抓包工具;无独有偶,模拟浏览学校网页也可以获取到所需数据信息。但是如何去获取、获取到的数据是什么格式、是否可以直接使用、用什么方式展示、怎么存储等问题困扰了笔者。笔者最后都一一解决了以上问题,基本完成了这个项目。

笔者使用封装好的网络请求框架AsyncHttp­Re­s­ponseHandler写了一个网络请求工具——HttpUtil,实现了get()和post()基本功能,利用需要爬取的网址,根据一定的爬虫策略便可以得到数据。但是得到的数据不可以直接使用,需要解析才能使用。解析有许多方式,例如利用Jsoup-1.8.3就可以对html进行解析从而得到想要的数据。拿到数据并不代表可以直接展示,因为爬出来的数据大多是乱序的。至于存储方案使用的是SQLite实现数据的持久化保存。并在SD卡中建立一个文件夹用来存放APP的数据资料。展示方面,要得益于安卓平台的强大,例如成绩的展示,可以用Expanda­bleListView来实现成绩的展示,通过编写ListView的setOnItem­ClickListener()方法来实现点击列表中子项后的功能[1]。下面对以上问题一一进行详细分析。

1 功能需求的设计与实现

1.1 基础工具类的设计与实现

1.1.1 网络框架(AsyncHttpResponseHandler( ))

使用异步网络请求框架写一个能实现请求post()和获取get()的工具类,避免后面重复使用造成代码冗余。并在登录的时候初始化CookieStore,以实现登陆的保持。

1.1.2 数据存储的实现

数据持久化是指将应用系统中所需要的数据保存到持续性信息载体(例如,数据库或其它信息存储方式)中的过程[2]。安卓平台提供数据库(SQLite)的支持,安卓数据存储有多种方案比如GreenDAO、OrmLite等。由于要存储的数据不是很大,可以写一个简单的自定义存储工具类(例如 courseDB)实现数据的读取和写入等操作。

1.1.4 Html 解析工具类的实现

由于下载不同的文件需要不同的URL,为了避免代码的冗余需要写一个下载的工具类实现对不同文件的下载,并对下载的文件进行压缩的处理以减小文件存储所占资源。

1.1.3 下载类工具的实现

HIML解析的过程是将HTML文档的流式数据结构化的过程[3]。数据的来源几乎全靠爬取,难免要多次解析不同的HTML页面文件,因此写一个HTML解析工具类很有必要,解析HTML可以有很多方案,比如HtmlParser、Jsoup 等。本文所涉及到的是Jsoup解析,Jsoup是Android应用开发中著名的第三方类库,其主要应用于解析html文件,获取用户需要的数据。它提供了一套非常完善的API接口规范,开发者可以通过DOM遍历或者类似于jQuery的操作方法来取出和操作数据。同时它还包含了一个支持最新 HTML5技术的解析器分支,能够很好的降低解析的时间和内存的占用[4]。

1.2 课程表功能的实现

1.2.1 数据的来源

介于数据获取的局限性,对于学生而言无法轻易触碰学校的数据库里面的数据。所以采用爬取的方式比较容易。网络爬虫(Web Crawler),又称为网络蜘蛛(Web Spider)或Web信息采集器,是一个自动下载网页的计算机程序或自动化脚本,是搜索引擎的重要组成部分[5]。但爬出来的数据无序甚至会出现乱码的问题,所以后期需要对数据分析和处理才能使用。

1.2.2 数据的展示方式

比如从正方教务系统后台爬出来的课程数据,一大串课程名字和上课时间地点等信息。不能直接用一个页面展示,那样会显得很唐突。可以参考超级课程表的设计风格,设计一种类似的布局方式:在布局文件中嵌套使用线性布局和相对布局的嵌套,自定一个shape(圆角矩形,彩色背景)并在Java文件中动态增加shape用来显示课程。

1.3 成绩等级功能类的实现

1.3.1 数据的处理

由于课程之间有许多相识之处,比如都有课程名字。但又有许多不同,如有些课没有学分等。这就导致没办法用一个单一的模式去显示不同的课程,需要对数据进行处理:对没有的数据填充无关项,在使用数据的时候以此进行判断,决定显示或者不显示。

1.3.2 数据的展示

成绩和等级数据不可能和课表用同一个方式去显示,因此要换一个方式,可以使用使用自定义的ExpandableListView展示成绩的详细情况。

1.4 学生选课功能的实现

选课环节和上面几个功能不同,涉及到与学校服务器交互的过程,不仅要获取数据,还要上传数据。因此要特别关注上传时要传入什么参数,可以通过HttpWatch软件来抓包分析。一些学院和专业的选课只有在学期末和学期初才开放,只有在这段时间才能获取到数据,因此选课要对最后选课的结果做个判断——用来反馈用户选课的成功和失败情况。

1.5 学生手册功能的实现

学生手册无需使用网络来获取数据,可以直接封装在APP中。使用自定义的控件TreeView将学生手册按目录展示。手册的内容以“.txt”的格式保存在APP系统文件夹assert下,通过代码动态读取并显示来完成学生手册的功能。

2 非功能需求的设计与实现

2.1 美工的设计

掌上校园APP应具有美观而友好的UI界面,提供良好的用户体验并且能够让用户快速上手。安卓原生态控件是无法满足新时代人们的审美需求。因此,对APP进行美工的设计势在必行,主要针对界面,动画效果,图标等优化。图标的制作可以选择画图的方式,也可以选择使用现有的图片后期加工,例如利用PhotoShop等工具实现图片的加工处理,适当增加动画的效果可以使得APP显得更加有活力和生机。

2.推动“三大”革命。要以农村生活垃圾处理、生活污水治理、村容村貌整治为主攻方向,坚持不懈推进农村“厕所革命”,因地制宜、分类施策,推广卫生厕所的大众化、普及化,着力改善农村人居环境,努力补齐影响农民群众生活品质的短板,推进美丽宜居乡村建设。

2.2 内存方面

客户端系统应尽量减少资源的损耗,不用的资源应及时回收[6]。现在市场上的APP绝大多数都有清除缓存的功能。由于手机的存储空间有限,用户都希望能及时处理掉缓存数据。清除缓存功能就是将用户数据文件夹和内存等中的非依赖数据清空。同样地,CPU也需要及时处理掉一些后台进程和服务,来减少资源的消耗。对返回键实行监听,当用户退出APP时及时销毁活动(Activity)和一些服务(Service)。

2.3 安全性方面

安卓系统是基于Linux3.0发展起来的,所以,该系统的核心就已经集成了Linux的绝大多数特点[7]。而且,其中主要部分就涉及到安卓系统安全认证及网络协议栈等等内容[8]。使APP和正方教务系统保持一致:用户使用学校提供的教务账号和密码登录,登陆时需要输入验证码。APP提供修改密码的功能,方便用户及时修改密码。用户退出时及时清空后台数据,增加权限管理等都可以提高APP的安全性。

if (result) {

HttpUtil.(url, params, new AsyncHttpResponseHandler() {

@Override

publicvoid onSuccess(int statusCode, Header[] headers,

byte[] responseBody) {

经过多次测试运行,统计出平均识别率,得到在不同像素分类情况下PNN的识别率。见表1。除此之外,在以上结论的前提下(10像素组拥有最佳的识别效果)与PNN神经网络相似的BP神经网络以及LVQ神经网络也使用相同的特征矩阵进行了识别工作,与其进行了横向对比。为了对比的公平,BP神经网络和LVQ神经网络将采用相同的10像素组特征矩阵进行训练和分类。

try {

String content = new String(responseBody, "gb2312");

boolean result = manager.parseCourse(content);

重要功能的部分代码与截图

在产品技术要求的条件得以满足的情况下,为减少产品生产成本,原材料和元器件同样也要考虑其经济合理性,选用最经济合理的原材料和元器件。从而降低了设备的维护成本和运行成本。

prefUtil.setBoolean­KeyData("first_refreshcourse", true);

prefUtil.commit();

dialog.dismiss();

Intent i = new Intent(RefreshActivity.this,

合作学习是以小组为单位,小组成员按学习能力和学习成绩的优、中、差三类搭配安排。小组讨论形式的民主、宽松的氛围,会触发学生的创新思维,进而逐步形成创新意识。

CourseActivity. class);

初始时刻,直流端接入5 V低压直流电,S1和S2开通,简化的等效电路如图5(a)所示。此时A相与C相同时开通,状态方程为

} else {

dialog.dismiss();

Toast.(Re­­­­­freshActivity.this, "未获取到课表数据... !",

Toast.).show();

}

} catch (UnsupportedEncodingException e) {

dialog.dismiss();

e.printStackTrace();

}

}

@Override

publicvoid onFailure(int statusCode, Header[] headers,

byte[] responseBody, Throwable error) {

根据河道的实际情况以及景观效果,于河道内设置了挺水植物栽培区,并对栽培的挺水植物类型进行如下设计:于河道周边建设了面积为3800m2的挺水植物栽培区域,并选择了千屈菜、芦苇、梭鱼草、黄花鸢尾以及花叶芦竹等作为主要种植的挺水植物,针对所种植的水生植物进行系统化的管理,提高植物的成活性和生物量。同时,根据植物的生态位以及温型,结合河道的环境条件对沉水植物的栽培品种进行了系统性的设计,并提前进行了试验栽培工作,结果发现金鱼藻、黑藻、苦草以及菹草等沉水植物可以良好适应河道环境。

dialog.dismiss();

11月,时至立冬,天气渐凉。对于饱受花粉过敏折磨的患者来说,这无疑是个好时节,因为杂草类花粉随着花期已过而消失殆尽,花粉症患者终于不再有频繁地打喷嚏、流涕、内耳刺痒等症状,也可以摆脱厚厚的口罩,轻装出行。

Toast.(RefreshActivity.this, "课表获取失败... !",

Toast.).show();

byte[] responseBody) {

}

});

}

String content = new String(responseBody, "gb2312");

startActivity(i);

@Override

publicvoid onSuccess(int statusCode, Header[] headers,

Bushing轴套力是通过一种数学模型的方式,利用软件设置弹性和阻尼来模拟几个零件之间的连接关系,通过设置Bushing径向刚度、轴向刚度和角刚度的数值来模拟轴承。由于轴承的阻尼很小,因此在本章中忽略不计。根据轴承类型选取位移刚度数值为Kx=1.84e5、Ky=1.84e5、Kz=2.6e5,选取的角度刚度数值为Kxx=1.4e5、Kyy=1.4e5、 Kzz=0[9]。

“是啊,如果我不逞英雄该多好!我也可以去办公司赚钱,有空了陪你去北京游故宫登长城,去蒙古草原纵马奔驰,到西北戈壁滩骑骆驼看沙漠日出日落……”

try {

各地区要成立由草原行政部门主要领导、分管领导参加的草原鼠灾防治指挥部,夯实工作责任,认真组织落实草原鼠害防治工作;要结合当地实际制定项目实施方案,抓住关键时期和重点环节,细化防治目标和任务,提出资金使用意见,加强督促和指导,落实各项工作措施。

HttpUtil.(url, new AsyncHttpResponseHandler() {

1.从被动到主动,是社区自治的前提。社区居民要有主人翁的意识,通过争当社区精英、热心肠,在做事的过程中带动更多的人参与,形成差序带动格局。在主动服务的过程中形成内生奖惩机制,评选出“热心阿姨”“好大哥”等光辉形象,对那些习惯于搭便车,享受了服务不干事、不配合的家庭或个人要透明、要曝光。

courseViewState = manager.ParseCourseViewState(content);

if (!courseViewState.is­Empty()) {

if (courseViewState. length() > 5) {

Message cour­seMsg = new Message();

courseMsg.wh­­at =;

注意,以上推导未考虑体效应的影响,即假设所有N型MOS管的阈值电压都相等。实际仿真过程中MOS管尺寸如表1。

handler.send­Message(courseMsg);

} else {

Toast.(RefreshActivity.this,

"系统繁忙,请稍后重试...", Toast.). show();

2) 运行费用估算:氧化药剂费用100元/t,生化药剂费用20元/t,电费30元/t,总计费用150 元 /t。

}

} else {

dialog.dismiss();

Toast.(Re­freshActivity.this, "系统繁忙,请稍后重试...",

Toast.).show();

}

} catch (UnsupportedEncodingException e) {

dialog.dismiss();

e.printStackTrace();

}

}

@Override

publicvoid onFailure(int statusCode, Header[] headers,

byte[] responseBody, Th­r­­o­­wable error) {

dialog.dismiss();

Toast.(getAPPlicati­onContext(), "查询失败!",

Toast.).show();

}

});

}

部分功能截图:如图1、图2所示

图1 设置界面

图2 教务界面

3 总结与展望

综上,南邮通达掌上校园APP主要实现了7个功能需求,基本满足了本校学生学业管理的需求。开发掌上校园对于我们而言培养了动手能力和团队意识;对于学校来说,掌上校园的开发是校园信息化建设的一个重要标志,为学校的信息发布、学生管理、教育教学创造了新的环境,改变了传统的单向信息交流模式和管理方法,使学校成为一个真正的,便捷的“数字化校园”[9]。在实现的过程中我们也遇到过一些小问题,比如验证码图片太小的问题、登录重定向的问题等。不过最后这些问题都得到解决,到此APP基本完成。此外,在开发这款APP的时候选择的应用模式也和传统模式不一样。应用模式由“基于计算机网络和PC客户端”模式转向“基于计算机网络和无线互联网络的PC机和各种手持智能设备终端作为客户端”[10],这也是开发这款APP的意义所在——迎合时代变化潮流。但也还可以继续深度开发:比如开发一个抢普通话考试的功能,解决普通话考试报名额度难抢的问题;比如开发一个一键好评、一键中评、一键差评和自选评价的功能来减轻每学期末辅导员和教师评价需要逐个点开的负担。如果这些功能可以实现,便可以成为这款APP的闪光点。最后为了把这个 APP最到最好,能够在学校推广,设计了一个“加入我们”的功能,用来召集有兴趣的同学进行深度开发,给APP注入新的活力。

[1] 王海峰. 基于Android技术校园信息平台客户端的研究与设计[J]. 软件工程师, 2014(9): 43-45.

[2] 欧阳宏基. 等. 一种基于DAO设计模式与Hibernate框架的数据持久化层模型[J]. 微型计算机应用, 2009, 30(3): 36-37.

[3] 王强, 等. Web文档清洗系统中HTML解析器的开发[J]. 计算机应用研究, 2002(2): 55-56.

[4] 盛雪丰. Android开发一大神器——Jsoup[J]. 电脑知识与技术, 2015(3): 63-65.

[5] 孙立伟, 等. 网络爬虫技术的研究[J]. 2010, 6(15): 4112-4113.

[6] 甘丽, 王雅婷. 基于Android系统的校园手机评教系统的设计与开发[J]. 通化师范学院学报(自然科学), 2013, 34(4): 39-41.

[7] 朱婷婷. 基于Android平台的PKM软件的研究与设计[D]. 浙江师范大学, 2012.

[8] 詹凯. 基于安卓操作系统的应用软件开发分析[J]. 通讯世界, 2016, 262(2): 262-263.

[9] 谢杭, 等. 基于安卓平台的掌上校园APP的设计与开发. 软件工程, 2016, 19(3): 24-25.

[10] 王超, 等. 基于安卓的掌上校园客户端设计初探[J]. 电子技术与软件工程, 2014: 44-45.

Android-Based Implementation of the Southern Post Mastery Palm Campus APP

YAO Yong-ming, MEI Yu-kai, ZHANG Xiang, YAO Yong-rui

(Tongda college, Nanjing University of Posts and Telecommunications, YangZhou, JiangSu 225200)

Inheriting "An analysis of the requirement of Android-based Nanyou Tongda Palm Campus APP" which analyzes the functional and non-functional requirements for designing this APP, and divides the functional requirements into seven modules such as curriculum-table queries. Four modules are required. Therefore, this article mainly discusses how to implement various specific functions above.

Palm campus; Android; APP; Realize

TP31

A

10.3969/j.issn.1003-6970.2018.08.011

南邮通达学院2017年大学生科技创新训练计划(STITP):基于Android的南邮通达掌上校园APP(项目编号CX66617016)

姚永明(1987-),男,西安邮电大学计算机学院硕士研究生,主要从事数字图像处理研究和软件工程;章香(1997-),女,南京邮电大学通达学院本科生,研究方向物联网;姚永瑞(1997-),男,南京邮电大学通达学院本科生,研究方向物联网。

梅雨凯(1995-),男,南京邮电大学通达学院本科生,研究方向物联网和软件工程。

本文著录格式:姚永明,梅雨凯,章香,等. 基于安卓的南邮通达掌上校园APP的实现[J]. 软件,2018,39(8):48-51

猜你喜欢

通达安卓校园
“神子”如何通达藏地——论格绒追美的长篇小说《隐蔽的脸》
文物表情包
博物洽闻,通达古今——记奉节县博物馆群
一种基于安卓系统的手机侧抓包分析方法
达业速度为则通达
安卓L未至安卓M来了!安卓首泄漏M系统