Android系统中LBS即时通讯应用的设计与开发

2014-11-30 05:49黄晓亮
惠州学院学报 2014年6期
关键词:即时通讯服务器端好友

黄 震,黄晓亮

(惠州学院 计算机科学系,广东 惠州 516007)

1 引言

在智能手机和移动互联网高速发展的今天,即时通讯应用占据了网络中绝大多数的流量,其得益于能够提供丰富的功能来满足用户的日常交流需要。国内很多学者利用不同的技术对即时通讯应用进行了研究,赖晓京实现了基于Htm l5 WebSocket一个即时通讯系统[1],可以直接在网上登录,避免了下载安装软件的麻烦;贺凌云等论述了基于局域网的即时通讯系统的设计方法[2];田源等研究了Protocol Buffers在即时通讯系统中的应用[3];方宣杰等设计了针对校园内部使用的即时通讯平台,避免了来自网上公众信息的干扰,可以提升校园工作管理水平和办公效率[4]。

基于位置服务(Location Based Service)是借助电信或其他运营商的通讯网络(如GSM网、CDMA网)或其他方式(如GPS)获得使用应用的用户的位置信息(地理坐标),在地理信息系统的帮助下,为使用者反馈相应服务的一种增值业务。

本程序实现了Android系统平台上的LBS地理信息获取、音视频编码、XMPP即时通讯传输协议[5,6]等综合应用,能够实现基本的即时通讯功能,同时结合了LBS服务,为用户提供了更丰富的功能。服务器端与客户端之间基于XMPP通讯协议,保证通讯的稳定性和可靠性。

2 程序功能分析

即时通讯是一种基于互联网的即时交流信息的业务,是一个终端服务,允许两个人或者多人使用网络即时的传送文字等数据。因此,移动平台上的即时通讯应用扮演着人与人之间交流桥梁的角色。用户对提供即时通讯的移动端应用程序基本功能的要求,使本程序在包含基本需求的前提下,结合LBS核心功能和地理信息系统,得出了服务器端与客户端两部分的程序功能分析。

图1 服务器端的会话管理流程图

服务器端的会话管理流程如图1所示,服务器端的会话管理主要是XMPP服务器对客户端发起的会话的内容信息的即时分发,包括账号管理、用户信息管理、聊天内容管理、地理位置信息管理。服务器端中账户管理模块对用户账号的注册与登录进行管理,同时保证账号的唯一性;用户信息管理对用户信息的管理,包括用户个人账号、昵称、性别和所在地的增删查改;聊天内容管理即时将相应的聊天信息分发到对应的账号,保证客户端接收消息的实时性;地理位置信息管理存储客户端上传到服务器的位置信息,包括账号、昵称、经度和纬度,并响应客户端的位置信息检索请求,反馈对应的位置信息列表到客户端。

客户端的会话管理流程如图2所示,客户端会话管理主要是客户端用户登录与注册、好友管理、聊天记录管理、文件共享管理、用户信息管理、聊天会话和地理位置定位等。客户端中登录与注册模块依据用户输入的账号和密码进行非空检测,同时发送相应的数据到服务器端进行校验;个人信息管理模块提供对用户信息的查看,包括昵称、年龄、性别、所在地,对用户自身信息的修改;好友管理模块提供根据账号添加好友,查看好友个人信息,删除好友功能;聊天管理模块可进行文本会话、语音会话、视频通话、文件发送和接收,并对本地聊天记录进行保存;地理定位管理模块对当前客户端所在地理位置信息进行感知,包括经度和纬度,并上传服务器端同步,同时,可以从服务器端检索附近存在的用户信息,并根据其账号添加对方为好友,然后进行聊天对话。

图2 客户端的会话管理流程图

3 程序的设计

3.1 服务器端数据库

在本程序功能分析的基础上,结合XMPP即时通讯传输协议和Openfire开源实时协作服务器的功能特性,以Openfire默认数据库管理模块为出发点,扩展服务器端对用户信息、好友信息、会话信息、多人聊天信息的管理,其中用户个人信息表结构如图3所示。

图3 用户个人信息表(think_user)

地理位置信息表结构如图4所示。

图4 地理位置信息表(think_location)

服务器端数据库的E-R图如图5所示。

图5 扩展表与Openfire自带数据库关系图

3.2 客户端数据库

客户端数据库中会话消息表结构设计如图6所示。

图6 会话消息表(XCHAT_message)

文件信息表结构如图7所示。

图7 文件信息表(XCHAT_file)

会话记录表结构如图8所示。

图8 会话记录表(XCHAT_talk)

客户端数据库的E-R图如图9所示。

图9 客户端数据库E-R图

3.3 架构设计

在针对本程序功能分析和数据库设计的基础上,对本程序使用了三层架构(MVC)进行程序架构设计,服务器端结合Openfire、Apache Web服务器和ThinkPHP框架,协调处理客户端与服务器的各种数据交换和数据处理,使用MySQL关系型数据库储存服务器端处理的数据信息。同时,客户端亦遵循Android系统MVC架构,视图层显示用户界面,控制层响应用户操作,模型层处理与数据库有关的操作等。

4 程序的实现

4.1 服务器端实现

通过搭建开源即时协作服务器Openfire,即将本地服务器构建成为一个支持XMPP协议的XMPP服务器,所有遵从XMPP协议标准的应用程序都可以与此XMPP服务器建立连接。从而,本即时应用程序能够在此基础上扩展服务器的功能。在用户信息管理模块中,服务器端自动检测客户端发送的请求类型,并做出相应的响应动作,如响应客户端的GET或POST方式的请求动作。

4.2 客户端实现

4.2.1 用户登录和注册模块

本程序客户端中用户登录和注册模块对用户的账号进行管理和检测,在用户拥有合法账号的前提下,使用其账号登录本程序,客户端调用XMPPAPI中的login方法,检验用户名和与之对应的密码,即可正常使用本程序。本模块视图层的用户界面如图10所示。

图10 登录和注册

4.2.2 用户信息管理模块

用户信息管理模块具有用户查看和修改自身账号资料信息、查看其他用户资料信息的功能,同时,支持修改用户资料信息,并将信息提交到服务器端保存。数据操作上采用GET方式获取用户信息,采用POST上传信息。本模块视图层用户界面如图11、图12所示。

图11 用户信息查看

图12 用户信息修改

4.2.3 好友管理模块

此模块提供好友的添加和展示功能,用户通过好友列表,可选择好友进行聊天;通过对方账号,在对方同意添加请求后,即可成为聊天好友并进行聊天。在实现方式上,客户端调用XMPPAPI的createEntry方法和removeEntry方法,实现添加好友和删除好友的功能。本模块视图层用户界面如图13、图14所示。

图13 好友列表

图14 添加好友

4.2.4 地理位置定位模块

地理位置定位模块具有通过Android智能手机传感器感知地理位置的功能,数据同步上传至服务器,并能在其他客户端上被用户所检索到,用户通过附近的人可查看用户信息和添加对方为好友。本程序所使用的定位服务为高德定位SDK,通过网络、基站和GPS定位来获取位置信息。本模块视图层用户界面如图15、图16所示。

图15 附近的人

图16 附近的人列表操作

4.2.5 聊天会话模块

聊天会话模块具有一对一聊天和多人聊天功能。当用户当前没有正在与发送消息的好友进行聊天会话时,客户端收到对方发送过来的消息后显示在程序主界面上,当用户正在与该用户进行聊天时,客户端则将消息直接显示在聊天窗口的界面上,同时,用户可以通过聊天窗口发送文件给对方。通过调用XMPPAPI的sendMessage方法发送会话消息,并监听对方发送过来的消息,同步显示在聊天窗口上。除此,聊天窗口亦能够进行音频传输和视频聊天。本模块视图层用户界面如图17至图22所示。

图17 一对一聊天

图19 录制语音消息

图20 接收语音消息

图21 视频通话

图22 多人聊天

5 程序实现的关键技术

5.1 Speex音频编解码

在智能手机终端进行语音消息的录制时,由于设备性能和网络传输速度的局限,对数据所占用的空间进行压缩则成为提高程序执行效率的有效方法。针对各种开源的免费音频处理引擎,并在保证压缩质量、易于使用的前提下,Speex[7,8]就拥有这些优点,并提供了不错的性能。通过其处理的音频数据,能够清晰地互相传送,信息真实。

另外,相对于其它编解码器,在网络应用上,Speex也非常适合网络环境。Speex针对不同设备的噪音抑制功能有大致相同的效果,减少背景噪音,改善音质,自动增益控制(AGC)则就是用来处理这种情况的,它提供了一种调整信号为参考变量的方法。有时候会有丢包和错误时序的情况发生,特别在使用UDP方式进行数据传输的时候,抖动缓冲的目的就是将它们缓冲到足够长并对这些包进行重排序,然后交给编码器进行解码。

在免提通讯系统中,声音从远端传回本地的扩音器,麦克风就会捕获房间内的回声,然后将其直接发送回远端,远端用户就会听到自己的回音。而回声消除器就是为了将传回远端用户的回声消除,提高远端用户接收到的声音质量。

5.2 网页实时通信(Web Real-Time Communication)

WebRTC[9,10]是一种支持网页浏览器进行音视频聊天的开源框架,基于javascript和P2P,在不同的浏览器之间构建起一个传输视频和音频数据的桥梁,使其摆脱客户端的限制,并拥有不错的多用户接入特性。

WebRTC的视频模块包括获取视频数据、视频数据编码、数据加密、多媒体文件和图像的处理、视频展示、网络数据传输与流数据控制等功能。视频采集(video-capture)支持多种媒体类型,如I420、YUY2、RGB、UYUY等,并可以进行帧大小和帧率控制;视频编解码(video-coding)采用I420/VP8编解码技术,VP8能以更少的数据提供更高质量的视频;视频加密(video-engine-encryption)相当于视频应用层面的功能,给点对点的视频双方提供数据的安全保证,防止视频数据的泄漏。数据加密采用密钥对数据进行处理并在接收方对数据解密并显示。同时,WebRTC还能对帧数据进行处理,增加亮度,提高清晰度,而且,还在不增加数据量和保证传输速度的情况下,可以动态改变视频质量,保证音视频数据的正确。视频显示(video-render)则是用来进行图像的渲染,在网络传输和流控方面,WebRTC采用了成熟的RTP/RTCP技术。

WebRTC技术最突出的特点就是通过浏览器就能进行视频通讯,摆脱了客户端的限制,只要一小段代码,就能实现视频通讯服务。

6 结束语

本文在对Android系统LBS即时通讯应用的开发基础上,对XMPP协议和Android系统应用开发技术进行研究,结合音频处理和视频处理技术,实现了一个满足基本需求的移动终端结合LBS特色的即时通讯应用,符合用户对程序功能的基本要求。

[1]赖晓京.基于Html5 WebSocket的即时通讯系统[J].电子技术与软件工程,2013(17):61-62.

[2]贺凌云,李明哲.基于Delphi的即时通讯系统的设计[J].物联网技术,2013(4):60-62.

[3]田源,潘晨光,丁杰.Protocol Buffers在即时通讯系统中的应用研究[J].现代电子技术,2014,31(5):32-34.

[4]方宣杰,陈文生.校园即时通讯平台的设计与实现[J].信息通信,2014(3):115-116.

[5]李新路.XMPP协议在Android即时通讯系统中的应用[J].电脑知识与技术,2013,9(28):6268-6270.

[6]齐幸辉,张庚,刘革,等.基于XMPP协议的文件传输模块设计与实现[J].无线电工程,2014,44(3):1-4.

[7]杨果,王亚洁,王晶.Speex编码器中回声消除算法的分析与评估[J].电声技术,2014,37(9):52-55.

[8]张立文,吴迪,宋占伟.基于Speex的嵌入式无线数字音频交互系统[J].吉林大学学报,2013,31(4):353-358.

[9]林鸿,王松,杨鑫,等.基于WebRTC技术的应用及平台技术开发与设计[J].电信科学,2013,29(9):20-25.

[10]董振江,李从兵,王蔚,等.移动互联网WebRTC及相关技术[J].中兴通讯技术,2013(6):28-32.

猜你喜欢
即时通讯服务器端好友
Linux环境下基于Socket的数据传输软件设计
属羊
民事诉讼中即时通讯记录的证据采用进路
浅析异步通信层的架构在ASP.NET 程序中的应用
删除好友
基于Qt的安全即时通讯软件服务器端设计
即时通讯软件发展模型的实证研究
科学技术哲学视域下的即时通讯
即时通讯软件WhatsApp
网页防篡改中分布式文件同步复制系统