基于Android平台的即时通讯系统的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Android平台的即时通讯系统的设计与实现
作者:杨莹
来源:《中国科技博览》2016年第02期
[摘要]本文在开源服务器软件 Openfire 及和 Android 平台上设计了基于XMPP 协议的即时通信系统;实现了即时通讯、好友添加、图片浏览、音乐播放、好友浏览等基本功能。所实现的系统功能完善,可为个人或企业搭建自己的即时通信系统,用于解决内部数据传输安全,实现了与其他通信系统互通等问题提出了可行性高的解决方案。
[关键词]Android平台,XMPP 通信协议,Openfire服务器,即时通信系统
中图分类号:TP311.52 文献标识码:A 文章编号:1009-914X(2016)02-0179-03
引言
21世纪,即时通信系统作为一种新兴的技术获得了突飞猛进的发展。即时通信(IM,Instant Messaging)是一种基于现代计算机网络通信技术的能够即时发送和接收互联网消息的交互方式。用户可以通过 Android 平台支撑的即时通信系统软件实现不同手机用户之间以及手机与电脑网络之间的视频、音频和文字等各种信息的即时交互通讯,以及移动终端之间点对点的信息交流与各种数据交换。
这些IM 系统丰富了我们的生活,给普通用户之间的低费用通讯带来了极大方便,但同时带来了新的技术和保密问题。XMPP 协议是开源协议,具有超强的扩展性和灵活性,也有成本低、研究和实现方便等优势,因而,对 XMPP 协议在该领域的研究有利于降低移动平台IM 实现的难度,为有类似需求的中小型企业提供一个低成本的解决方案。为此,本文中采用XMPP 协议实现移动平台系统,以满足产品自身的需要。
1 系统开发关键技术分析
1. Android平台架构分析
Android一词的本义指“机器人”,是一个移动设备的软件平台。它提供包括:SDK、Key Apps、Middleware、Linux Kernel四个部分在内的开源手机操作系统。它开放了基于内核以上的开发工具,从而保证了内容的可移植性和多样性,为系统开发者开发应用程序提供了一套很好的框架,用户可以在这个平台的基础上开发不同的应用程序,也可以开发新的组件供应用程序调用。
1.1 Android 系统层次结构
如图1所示,Android的架构是由:Linux内核、/C++函数库、Dalvik虚拟机、应用框架以及关键应用程序构成的,通过编译基于框架的应用程序可以降低开发负荷应用软件原则上是在Dalvik VM上运行的。
1).关键应用程序
Android平台内包含一些关键应用程序,如:邮件收发客户端程序、短信收发程序、日历和网页浏览器等。
2)应用程序框架
Android应用程序的开发基于框架和组件。Android本身己在其框架中提高了许多的组件供应用程序调用,当然开发者也开放新的组件,并将组件放入应用程序框架中,以供自己和其它应用程序调用。
3)C/C++函数库
Android应用程序框架之下是一套C/C++函数库,它们服务于Andrei应用程序组件,其功能通过组件间接提供给开发者。
4)Java程序运行环境
Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。
5)Linux内核
Android系统平台是基于优化了的Linux内核,是其系统平台的核心。它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层,提供了一个屏蔽层用于屏蔽硬件和上层软件。
1.2 Android应用的构成和工作机制
对于一个Android应用程序来说,是由Activity、IntentReceiver、Serviee、ContentProvider 四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。在应用程序中使用时,需要在配置文件AndroidMainfest.xd中进行配置,这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等,其中:
1) Activity组件,主要负责创建与用户进行交互的显示窗口,用户可以在这些窗口里通过调用SetContentView(View)方法来显示其用户界面;
2) IntentReceive组件,用于对外部事件的响应,当外部事件发生时,会使用NotifieationManager通知用户。如在本系统中,当用户正在其它界面进行操作时,有好友发送消息过来,就会以通知的形式发送到当前界面的正上方来通知用户。
3) Service组件是不带UI提供连续信息的应用程序。本系统客户端扩展功能的音乐播放就是采用Service来进行设计和开发的,使用户可以边聊天边听音乐。
4) ContentProvider应用程序组件能够将它们的数据保存到文件、SQL数据库和其它的存储设备中。使用ContentProvider能够灵活的替换底层使用的存储设备,使开发者可以专著于应用逻辑的开发,不用考虑底层存储设备的细节,从而使应用系统具有良好的数据迁移性。
2 XMPP 协议基础
XMPP协议(Extensible Messaging and Presence Protocol,可扩展消息处理现场协议)是一种基于XML的协议,目的是为了解决及时通信标准而提出来的。它继承了在XML环境中灵活的发展性,因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。
XMPP中定义了三个角色:客户端、服务器、网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。
XMPP的基本网络结构如下:
C1----S1---S2---C3
C2----+--G1===FN1===FC1
符号表示:C1,C2,C3=XMPP客户端;S1,S2=XMPP;服务端G1=在XMPP和使用外部消息网络(非XMPP)的协议之间转换的网;FN1=外部消息网络;FC1=外部消息网络的客户端。
1)服务器