APP下载

基于Android 的校园应用软件开发与实现

2014-01-21李宁宁王远飞

电子设计工程 2014年20期
关键词:服务器端控件客户端

李宁宁,王远飞,张 冉

(1.大连东软信息学院 辽宁 大连 116023;2.大连理工大学 辽宁 大连 116023)

随着网络与通信技术的不断发展,当代大学生的校园生活也在发生着时代性的变化。当前流行的软件、游戏和电子产品等,都能在校园里得到及时的关注和反馈;同时,大学生也能及时发现身边所需的应用,从而着手进行开发和推广。而智能手机和网络的迅速发展和普及,使得校园应用的移动化势必成为未来的趋势。

Android作为Google移动互联网战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现[1],它是一个真正意义上的开放性移动设备综合平台,包括操作系统、用户界面、中间件和应用程序,拥有移动电话工作所需的全部软件,同时其开放性保证该平台不存在任何阻碍移动产业创新的专有权障碍[2]。为了探索校园学习与生活的各种移动应用开发思路与过程,本文以大连东软信息学院的校园应用为背景,基于开放的Android技术,实现了手机端的一系列应用软件,并在校园内进行推广,现已拥有一定的使用量和客户群。在此基础上,搭建了服务器端+客户端的Android应用开发架构模式,开发结构类似的应用软件,从而缩短开发流程。

本文介绍了使用服务器端+客户端结构,在Android系统上进行校园软件的开发与设计——使用Android平台推出的SDK和Eclipse开发环境[3]实现了校园饮食软件、东软新闻客户端、校园留言板等校园应用,方便学生在手机端随时随地获得校园信息,感受大学生活的便捷和学以致用的乐趣。以上应用已在模拟器和真机上通过测试。

1 系统分析和关键技术

当前的校园移动应用通常是针对于学生手机端的信息发布和交流,而信息数据是需要通过网络来进行获取。也就是说开发过程中,应包括信息提供端和手机接收端,即服务器端和客户端两部分:服务器端负责提供数据和维护数据,客户端负责信息的发布和显示,服务器端和客户端的纽带是网络连接。该系统的物理架构主要由后台数据库服务器、Web服务器、无线网络、Android校园客户端等部分组成。客户端(主要由学生使用),通过无线网络访问后台服务器,相关数据信息由后台数据库服务器提供,客户端的部分数据存储使用SQLite数据库,应该保持客户端的数据和服务器数据库中的数据一致。运行过程中要保证Web服务器始终处于开启状态。图1为校园应用的系统物理架构。

图1 系统物理架构Fig.1 System physical architecture

我校的校园移动应用系统Web服务器端采用MyEclipse+Tomcat+MySQL的组合进行开发,采用Struts2[4]框架实现了数据维护。客户端建立了Android SDK+Java JDK+Eclipse的开发环境,获取服务器端的数据,将其加载到Android应用程序中,发布到手机客户端。用户只需要到校园电子市场下载客户端软件(.apk文件),安装至手机即可。Web服务器和数据库服务器由开发者在校园内网服务器中进行搭建和发布,并保持长期运行状态。

2 设计思路

针对上文的系统体系结构,我们将校园应用软件的开发分成服务器端设计、数据存储、网络传输和客户端设计4部分。下面我们详细介绍每一部分的作用和开发思路。

2.1 服务器端设计

服务器设计采用Struts2框架,并采用MVC三层结构处理。由于数据信息不是很大,系统采用的是MySQL数据库。页面通过JSP技术,将需要维护的数据信息以表格的形式列出,提供增加、删除、修改的链接即可。通常,除了基本的文字信息外,也包含图片信息。图片信息是统一放在服务器的指定目录中,数据库中存储其对应的地址。

服务器端另一个很重要的作用是提供JSON(JavaScript Object Notation)格式的数据,并返回给客户端。JSON是一种轻量级的数据交换格式,能够替代XML的工作。在可读性、可扩展性、编码以及解码等方面,JSON和XML语言相当,甚至是有更强的优势。在Java平台上可用的JSON类库较多,本系统选择的是Google的Gson类库。

2.2 数据存储

数据存储涉及到两部分。服务器端通过MySQL数据库存储信息,同时,在客户端用SQLite作为本地缓存,拥有和服务器端完全相同的表结构。在不能及时联网获得数据时,可以通过本地数据库得到最近的数据内容,从而保证了软件的顺畅使用;在联网后,检查本地数据库内容是否与网络数据库内容一致,如果不一致,自动更新,从而保证数据的及时性和准确性。

2.3 网络传输

Android已经成功地集成了HttpClient[5],客户端通过使用Apache的HttpClient发送GET/POST请求即可正常访问资源,如果需要发送请求参数,可以调用setParams()方法来添加,最后调用HttpResponse的getEntity()方法可获得服务器的响应内容。当然,在整个运行过程中,要保证客户端和服务器端都处于联网状态。

2.4 客户端设计

客户端设计主要是通过网络获取服务器数据,解析JSON格式数据,然后以用户的角度进行信息提供。为了吸引更多的使用者,美工是客户端设计的重要因素。通过动态设置 ListView 的 颜 色 , 借 用 GridView,Gallery,ImageButton,EditText等控件,配用各种背景元素呈现出具有特色风格的界面。

3 系统功能及实现

该系列校园应用软件的实现包括客户端Android界面程序实现和后端服务器。它们采用服务器端收集和汇总信息,客户端进行信息的获取、呈现以及反馈。

3.1 服务器端功能

服务器端采用Struts2框架编写了比较通用的代码,完成JSON格式的数据传输;针对不同的校园应用,有不同的数据库设计,在服务器端的数据库操作代码,完成通用功能的编写,如数据库的创建、关闭、表创建、版本升级等,为了简化数据库部分的操作,我们将数据库表连接参数、表名、列名等通过XML写入。另外,我们也完成了Excel文件导入导出、图片上传、文件读写等操作。其中项目源代码部分截图如图2所示。

图2 服务器端部分截图Fig.2 Screenshot of server codes

3.2 客户端功能实现

在客户端,完成了网络数据获取的类,只需要修改服务器地址即可连接到不同的服务器上。客户端变动较大,针对不同的应用,利用控件做具体的UI设计,并将服务器端提供的数据以清晰、方便的形式展现出来。下面从校园饮食软件、校园留言板和东软新闻客户端3个应用程序的客户端分别进行介绍。

3.2.1 校园饮食软件

就餐饮食是大学生日常生活中必不可少的一部分。该软件将各个食堂的饭菜做了菜谱汇总,提供出最真实、最客观的相关信息;同时收集同学们的反馈信息,及时与校方沟通。另外,还允许商家进行拍照上传,在后台,管理人员将针对这些上传的图片进行整理,选出更恰当的图片对当前信息进行更新。

1)菜谱列表功能

为了推广菜谱软件的使用,用户不需要注册和登录可直接进入店铺列表,进入店铺后,系统以图片的形式显示该店铺的食谱,用户根据自己的口味进行选择。店铺列表通过ListView控件进行实现。店铺信息由客户端向后台服务器请求,通过JSON格式封装数据,在客户端收到数据后,对其进行解析,然后通过数据适配器,将数据添加到ListView中。

2)订餐

订餐是饮食软件中不可或缺的一部分。本应用在用户选择菜谱的同时,只需一键即可直接订餐(前提是本店铺提供订餐和电话号码)。订餐的实现是借助于Android手机的电话拨打功能,获取所在店铺的电话号码,直接调用手机自带打电话应用程序。

3)摇一摇功能

摇一摇功能是针对用户在就餐无从选择时,可以通过该功能来辅助完成。在摇一摇界面中用户可以通过点击按钮或晃动手机的方式让系统随机选菜,该功能的实现主要由以下三个方面组成:声音管理器(SoundManager)、震动器(Vibrator)与加速传感器(SensorManager)。具体实现过程如下:

通过注册和监听SensorEventListener事件,并重载onSensorChanged方法来获取手机加速度的变化,从而决策是否选菜。当加速度超过了预先设定的阀值SPEED_SHRESHOLD则回调方法onShake(),通知应用完成了一次摇晃操作,在主函数中同时启动SoundManager的playSound()与Vibrator类的vibrate(500)方法,播放设置的声音并震动0.5s,最后从数据库中随机选出一道菜推荐给用户。另外,需要增加震动的权限。

其中,该应用的部分截图效果如图3~5所示。

3.2.2 校园留言板

该软件的功能比较简单,即实现校园的手机BBS交流平台。让学生时刻可以交流和通讯,方便了校园生活。

1)留言列表

图3 店铺列表界面Fig.3 Interface of store list

图4 菜谱列表界面Fig.4 Interface of menu list

图5 本期推荐界面Fig.5 Interface of current recommendation

该功能的界面主要是利用ListView组件进行设计的,因为ListView的数据来源灵活并可以实现自身的样式定制。ListView中的列表数据是通过适配器将其映射到组件中。列表 的 适 配 器 类 型 有 ArrayAdapter、SimpleAdapter和SimpleCursorAdapter3种,也可以通过继承BaseAdapter类自己定义适配器。本系统则采用的自定义的适配器类方式。编程人员通过实现getView方法为其第二个参数convertView进行赋值,在相应的控件中获取服务器上的数据内容,实现自己定义的显示效果,如图6所示。

2)留言板菜单

图6 校园留言板列表Fig.6 List of campus message board

由于留言板功能比较简洁,所需功能比较集中。所以其他功能主要是靠菜单与用户进行交互,如图7所示。东软贴吧是打开一个新的Activity页面,页面中通过WebView控件加载贴吧的内容;刷新是更新贴吧内容;话题征集与反馈,是借助于友盟实现的;开机动画是跳转到开机页面;关于我们进入开发团队介绍页面;下载二维码是通过联网获取服务器上的图片。

图7 校园留言板菜单Fig.7 Menus of campus message board

3.2.3 东软新闻客户端

该应用是将传统的网页新闻移植到移动应用客户端,让学生可以随时随地获得校园的最新通知和信息。

1)新闻内容列表

首次进入客户端,需要同步网络数据,更新成功后,可以进入图8的界面效果。点击任意的Item项则可以阅读具体的新闻内容页(如图9所示),也可以进行相应的跟帖。该新闻内容均来自于服务器端的新闻发布,通过JSON数据格式传输。由于新闻内容可能较多,通过继承ListView类,实现了一个可以下拉更新的子类。

新闻客户端的信息发布,除了文字内容还有图片信息。图片信息的获取,是通过数据流的形式从网络上获取,并存储到本机的SD卡中的指定文件夹中,然后应用程序读取本地的图片信息利用ImageView、Gallery等控件进行显示。

2)附加功能

图8 进入首页Fig.8 Homepage

图9 新闻内容页Fig.9 News content

该应用还嵌入了百度贴吧的东软校园贴吧内容(如图10所示)以及天气预报的功能。贴吧是通过联网,利用WebView控件读取URL地址[7],获取网络上的内容;天气预报是通过程序新建一个线程,读取天气信息,并及时更新至应用中。

图10 东软校园贴吧Fig.10 Post bar for Neusoft campus

4 结论

为了给学生提供及时准确的就餐和新闻信息,公共开放的交流平台,增加校园生活的乐趣,我们设计和实现了若干校园应用软件。通过这些软件的开发,师生共同探讨了校园软件的设计和实现过程,总结了校园软件的设计模式和结构。该结构开拓了校园移动软件应用的设计思路,为校园实现信息现代化迈出了第一步,从而进一步丰富了当地大学生的校园生活和学习。但由于该类软件的运行和维护,均需要校园服务器的支持,并且局限于校园内网,我们正在将服务端代码迁移至以百度云环境(BAE),利用其提供的云服务、云数据库等完成后台数据存储操作,降低维护的成本,并保证网络的畅通。从而即将推出百度云+Android客户端的开发结构。

[1]杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010.

[2]顾聪,陈益强,刘军发,等.基于Android平台的室内LBS系统设计与实现[J].计算机工程与设计,2012,33(1):396-400.GU Cong,CHEN Yi-qiang,LIU Jun-fa,et al.Design of indoor LBS system based on Android platform and its implementation[J].Computer Engineering and Design,2012 33(1):396-400.

[3]李宁宁,郑纯军.基于Android平台网络相册的设计与实现[J].电视技术,2013,37(15):71-73.LI Ning-ning,ZHENG Chun-jun.Design and implementation of web album based on Android[J].Video Engineering,2013,37(15):71-73.

[4]范立峰,林果园.Java Web程序设计教程[M].北京:人民邮电出版社,2010.

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

[6]王向辉,张国印,沈洁.Android应用程序开发[M].北京:清华大学出版社,2010.

[7]刘一田,孔震,李萌.Web应用中故障检测机制的研究与改进[J].陕西电力,2012(11):66-69.LIU Yi-tian,KONG Zhen,LI Meng.Research and improvement of failure detection mechanism for Web applications[J].Shaanxi Electric Power,2012(11):66-69.

猜你喜欢

服务器端控件客户端
基于.net的用户定义验证控件的应用分析
Linux环境下基于Socket的数据传输软件设计
如何看待传统媒体新闻客户端的“断舍离”?
关于.net控件数组的探讨
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用