首页 > 范文大全 > 正文

基于Android平台的即时通信系统设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于Android平台的即时通信系统设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

[摘要]目前主流的IM协议有四种,包括:可扩展消息与存在协议(XMPP)、空间和即时信息协议(PRIM)、即时信息和空间协议(IMPP)、针对即时信息和出席扩展的会话发起协议SIP(SIMPLE)。在这四种主流协议中,XMPP协议具有很好的灵活性和扩展性。由于XMPP协议是高度自由、高度开放的协议,易于掌握和理解,而且在服务器、客户端、插件、源代码厍等方面,有多种实现。任何遵循XMPP协议的软件,可以实现相互通讯。加之Google公司开发的Gtalk软件也是基于XMPP协议的及时通讯软件,同时很多软件巨头也对XMPP协议进行支持,促进了XMPP协议的推广和普及。因此,研究XMPP协议及基于此的即时通讯软件的设计与实现,有深远的意义。

[关键词]XMPP协议;即时通信系统

中图分类号:TN914 文献标识码:A 文章编号:1009-914X(2015)05-0322-01

1系统相关技术背景介绍

1.1 XMPP协议分析

目前主流的IM协议有四种,包括:可扩展消息与存在协议(XMPP)、空间和即时信息协议(PRIM)、即时信息和空间协议(IMPP)、针对即时信息和出席扩展的会话发起协议SIP(SIMPLE)。在这四种主流协议中,XMPP协议具有很好的灵活性和扩展性。由于XMPP协议是高度自由、高度开放的协议,易于掌握和理解,而且在服务器、客户端、插件、源代码库等方面,有多种实现。任何遵循XMPP协议的软件,可以实现相互通讯。加之Google公司开发的Gtalk软件也是基于XMPP协议的及时通讯软件,同时很多软件巨头也对XMPP协议进行支持,促进了XMPP协议的推广和普及。因此,研究XMPP协议及基于此的即时通讯软件的设计与实现,有深远的意义。

1.2 XMPP协议簇

XMPP协议簇一共分为四层,最底层的是TCP协议,向上依次分别是TLS协议(即传输层安全协议)、SASL协议(简单认证和安全层协议)、XMPP协议。TLS由操作系统提供,用于在两个通信应用程序之间提供保密性和数据完整性。SASL是由应用层提供,而XMPP则是应用层本身。XMPP协议采用SASL协议作为身份认证协议。基于XMPP协议的SASL协议需提供如下三个方面信息:服务名(XMPP)、初始序列、交换序列和安全层协商。

1.3 openfire服务器

openfire(原名Wildfire或者JiveMessenger)是由Java语言编写的、基于XMPP协议的服务器,具有跨平台能力,获得了Apache2.0许可证。openfire是基于XMPP协议的IM的服务器端的一个实现,两个用户想要进行通讯,首先要连接到Openfire。服务器获取一些连接信息,然后两个用户之间才能建立连接。当两个用户之间建立连接后,用户可以采用点对点的方式来发送接收消息。

2 IM技术原理和工作方式

典型的IM工作方式如下:登陆IM通讯中心(IM通讯服务器),获取一个自建立的历史的交流对象列表(好友列表),然后自身标志为在线状态,当好友列表中的某人在任何时候登录上线并试图通过你的计算机联系你时,IM系统会发一个消息提醒你,然后你能与他建立一个聊天会话通道进行各种消息如键入文字、通过语音等的交流。

3即时通讯系统的设计

3.1服务器端处理流程

首先,ConneetionHandler接收Socket数据,然后StandzaHancller对socket数据进行解析,解析为Element对象,最后,根据Element对象的不同,分别分配给相应的路由(router)去处理。IQRouter、MessageRouter和PresenceRouter分别处理IQ、Message、和Presence。

3.2系统客户端的设计

系统客户端采用了MVC的设计模式,将视图层、控制逻辑层以及数据模型层进行分离,实现客户端程序的高内聚,低耦合,提高代码的重用性,降低系统的维护成本。Google设计的android手机操作系统,本身也采用MVC的设计模式,这样一来,为设计和开发Android应用程序提供了良好的基础。在Android程序中,视图层的布局和规划,可以通过XML文件进行配置编码,当然也可以通过Java硬编码的方式进行布局,但这不是Android推荐的布局方式。

3.3用户界面布局设计

系统客户端的界面设计包括用户注册,用户登录,配置设置,联系人列表,个人信息及状态设置等。

用户运行客户端时,首先在内部控制模块判断,是否存在用户配置好了的信息,如果存在,则直接调用配置过得信息进行网络连接;如果没有,则会进入向导模式,这个时候供用户选择,如果用户已经有账号了,则可以直接到登录界面填写登录信息进行登录,如果用户没有账号,则选择注册,到注册界面进行注册;登录成功后,就会显示联系人列表,不成功时,可以点击手动设置来配置一些登录信息和网络设置信息等;由联系人列表视图可以进行好友管理,分组管理,个人信息管理,状态信息管理等等。

4即时通讯系统的实现

本系统采用C/S(客户端一服务器端)的系统架构,客户端是基于Android手机操作系统开发的即时通讯软件,采用Java编程语言开发和MVC的设计模式。服务器端采用当今流行的开源服务器Openfire和开源数据库MySQL构建。Openfire服务器负责处理客户端软件发送的身份验证请求、连接请求、数据交换等,配合MySOL的数据存储功能,实现XMPP协议客户端软件的即时通讯。

4.1用户界面布局实现

本系统客户端的用户界面布局文件存放在/res/layout中,Android系统据系统可以根据系统自身的重力感应,进行相应的屏幕适配。当然,如果手机横屏和竖屏的布局存在明显差异,则可以通过在ms目录下创建layout-land与layout-port两个文件夹,当手机横屏时,系统会加载res/layout-land目录下的文件,当手机竖屏时竖屏时,系统会自动加载res/layout-port目录下的文件。本系统由于横屏和竖屏的显示差异不大,所以无论手机是横屏还是竖屏,系统都会加载res/layout下的界面布局文件

4.2数据存储模块实现

本系统客户端需要存储用户登录的基本信息和用户好友的基本信息,以及用户和好友的聊天记录。

4.3即时通讯模块实现

在开发Android应用程序过程中,开发人员必须遵守单线程模型的原则,Android的UI操作并不是线程安全的,而且这些操作必须在UI主线程中执行。系统客户端的登录请求、发送数据请求、接收数据的操作,都采用异步任务的方式进行。Android提供了AsyncTask类,实现异步数据请求,不会阻塞UI界面,这样会产生良好的用户体验。

5系统总结与展望

本系统是在使用开源Opentire作为即时通讯服务器的基础上,使用Eclipse开发环境和Java软件开发语言,开发即时通信手机客户端软件。在系统设计和开发过程中,需要学习掌握几个阶段的技能:

(1)对系统相关基础知识的学习,有java语言程序设计的学习,面向对象的设计模式的学习,linux系统相关知识的学习,最后是Android系统内核,Android应用框架以及即时通讯XMPP协议的学习等等。

(2)对系统进行试探性的分析与整体架构的设计,画出整体框架图,用Eclipse进行相关页面的UI设计。

(3)在已有系统框架的基础上,细化系统相关的服务程序,进行分层设计与实现;并在UI界面的基础上将服务程序,多线程处理程序等等加入到系统中。