文献标识码: A
文章编号: 0258-7998(2013)09-0139-03
当前移动设备上的传统即时通信软件(如QQ、MSN等)是基于TCP协议的即时通信软件,已难以满足个性化的社交需求。随着GPS(Global Position System)系统的普及和移动互联网的高速发展,基于地理位置的服务LBS(Location Based Service)式社交成为研究智能手机应用的热点。LBS是指移动网络通过GPS技术和电子地图平台的支持来获取移动终端用户的位置信息,为终端用户提供相应服务的一种增值业务[1]。参考文献[2]研究了匿名LBS的使用,参考文献[3]讨论了LBS应用的安全技术,参考文献[4]提出一种基于Web 服务技术构建LBS 的体系结构。但是目前国内LBS仅在移动互联网、社交网络和电子商务的单独应用较多,因此研究这三者的结合,是目前IT技术科研应用的重要领域,同时也将带来巨大的经济和社会效益。LBS移动社交资源共享SMSRL(Sharing Mobile Sociality Resource Based on LBS)平台正是利用上述技术,完成一些即时性的实际社交活动,使单纯的网络信息交互,变成立体化的人际式交互。
1 SMSRL平台概述
SMSRL平台是Android手机上开发一个LBS交友应用程序,其功能促进了用户的社交发展。该平台利用Android的GPS定位数据,结合百度地图开放API与极光推送API,使移动用户之间,特别是附近的用户之间实现更有价值的社交活动,如帮助完成某些任务、与附近的好友聊天等。
SMSRL平台的开发严格遵循软件工程的原则,开发分为如下步骤:
(1) 需求分析; (2)设计客户端UI;(3)设计数据存储,创建数据库和表; (4)设计服务器端与客户端交互;(5)实现客户端功能界面与服务器端的逻辑处理; (6)客户端程序打包、签名并发布。
2 SMSRL平台需求分析
SMSRL平台通过手机定位技术,认识了身边的有缘人,可与熟悉的或陌生的朋友打招呼、聊天、分享位置等信息。SMSRL的功能结构图如图1所示,主要功能包括:任务管理(包括发布任务、我的任务管理、附近任务列表等)、好友的管理(包括显示好友和自己的最新动态信息、查找附近好友、聊天)及对系统、任务的设置。
SMSRL的主要参与者包括发布者和搜索者,涉及的主要用例有:发布任务、状态管理、搜索任务、任务竞标等,系统用例图如图2所示。
3 SMSRL平台设计
3.1 架构设计
Andriod是目前流行的智能手机终端操作系统和移动应用开发平台,由操作系统、中间件、用户界面和应用软件组成,是一个开放而完整的移动“软件栈”[5]。SMSRL平台的设计借鉴了参考文献[6-9],其设计思路是:利用Android平台的GPS定位模块提供位置信息,利用极光推送API实现消息推送,调用百度地图API实现地图描绘,利用Android应用程序框架实现网络通信的功能。客户端点击界面产生触屏事件,发送请求给监听Service服务类,Service处理请求后调用HTTPClien组装请求URL,发送并异步接收数据刷新界面。服务器端Strust2框架接收到URL请求调用对应Action处理数据,Action再调用Hibernate做数据持久化,按照请求调用推送框架,组装推送消息,实现实体类推送。
3.2 SMSRL平台数据库设计
SMSRL平台涉及的实体主要有用户、活动、好友和任务,这些实体关联又产生了活动参与表、用户参与表、在线用户列表等。同时为了提高存取速度,将用户、活动、好友和任务实体的相关图片存放到相应的图片表中。服务器端数据库模型如图3所示。
3.3 MSRL平台的关键技术
3.3.1 服务器端与客户端交互协议设计
Android客户端的联网协议采用Http的方式,而由于Android 内部已经集成了Apache Http这个类,所以本设计采用了HttpClient的方式做Http连接。自定义HttpClient类内部采用单例模式获取HttpClient对象,发起Post请求。而每一种消息经处理后返回Json格式字符串,并且将其实例化为对应的消息体对象,Entity为统一的消息接口,将请求返回的输入流传进,返回以UTF-8编码的Sring类型对象。获得返回值之后,在MyService作处理,并通过Android的Handle方式异步刷新UI作出反应。
3.3.2 异步加载最新信息的设计
由于Android自带的Listview显示风格单调,而且不具备下拉刷新与上推加载的功能,本平台设计并实现了比较常用的下拉刷新异步加载图片的ListView控件。在列表显示界面中,可以按住列表项向下拖动加载最新消息,在列表最后的一项,通过向上拖动或者点击加载更多消息,并伴随加载动画。设计的XListView控件继承了Android平台的ListView,其相应的类图如图4所示。
3.3.3 图像加载功能的实现
(1) 图片获取
由于Android的文件存储于网络,因而使用异步加载的方式来显示控件可以给用户带来更好的体验。在Android应用中,如果UI线程5 s内没响应,就会抛出无响应异常,在远程获取较大图片资源时,这种异常很容易导致应用失败。要避免这种问题的产生,将启动一个新的线程来获取资源,完成后通过Handler机制发送消息,并在UI线程中处理消息,从而达到在异步线程中获取图片的效果。
(2) 图片保存
在每次获取图片资源时,都要重新进行远程下载,占用内存太多,而且加载速度慢,特别是较大的图片资源,甚至会导致内存溢出。为了提高加载速度、节省流量,将图片资源保存在本地手机的SDCard上,需要时可直接从SDCard读取。SDCard空间毕竟有限,因此采用最近最久未使用(LRU)算法,当空间不足时,根据LRU规则删除一些最近没有被用户使用的资源即可。
利用Android通用框架,结合百度地图与极光推送的开放API,实现了LBS社交资源共享平台。在系统的设计中充分考虑了Android系统的易移植性、高销量等优点,集中使用了Android系统的各接口API模块,特别是异步加载最新信息和图片资源下载的设计和实现,使系统的运行效率有了较大的提升。该平台的广泛应用,彻底加强了社交网络的真实影响。
参考文献
[1] 李海燕, 张岩. 移动通信网络的移动台定位技术及应用[J].邮电设计技术,2006(3):27-34.
[2] MARCP G, DIRK G. Anonymous usage of location-based services through spatial and temporal cloaking[C]. International Conference on Mobile Systems, Applications, and Services-MobiSys,2003.
[3] Yang Jie, Chen Yingying, SANJAY M, et al. Securing mobile location-based services through position verification leveraging key distribution[C].Wireless Communications and Networking, IEEE Conference-WCNC, 2012.
[4] 周脚根,边馥苓.一种基于位置的移动服务系统的设计与实现[J].武汉大学学报(信息科学版), 2006,31(4):352-355.
[5] 姚昱曼,刘卫国.Andriod的架构与应用开发研究[J].计算机系统应用,2008(11):110-112.
[6] 张志清.基于Android的移动社交产品客户端设计与实现[D].北京:北京交通大学,2012.
[7] 刘卜.移动社交网络平台的研究与实现[D]. 北京: 北京邮电大学,2011.
[8] 许颖,魏峰远.移动GIS关键技术及开发模式探讨[J]. 测绘与空间地理信息,2008,31(4):45-47.
[9] 罗英伟,黄宝琦,汪小林,等.轻量级WebGIS系统PKGML[J].计算机辅助设计与图形学学报,2005,17(04):852-861.