毕业设计论文-基于Android平台的即时通信系统设计.doc_第1页
毕业设计论文-基于Android平台的即时通信系统设计.doc_第2页
毕业设计论文-基于Android平台的即时通信系统设计.doc_第3页
毕业设计论文-基于Android平台的即时通信系统设计.doc_第4页
毕业设计论文-基于Android平台的即时通信系统设计.doc_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙 江 理 工 大 学毕业设计(论文)诚信声明我谨在此保证:本人所写的毕业设计(论文),凡引用他人的研究成果均已在参考文献或注释中列出。 设计(论文)主体均由本人独立完成,没有抄袭、剽窃他人已经发表或未发表的研究成果行为。如出现以上违反知识产权的情况,本人愿意承担相应的责任。声明人(签名):年 月摘 要目前已超越IOS平台一跃成为最大的移动平台的安卓平台,再借着4G的东风又有了更加进一步的发展,在此背景下,本文设计了基于Android平台的即时通信系统,考虑到XMPP是基于XML格式的开源的通讯协议,而XML又具备极强的扩展性,因此,Android平台结合XMPP协议实现的端到端通信系统是具有很好的发展前景的,其效益也是被许多大型的IM公司所认可。本文介绍了基于Android平台的即时通信系统的设计和开发过程,主要包括了客户端的界面的设计,以及核心功能的实现。在设计和实现本系统的整个过程中,对功能模块做了详尽的划分,包括登陆模块,账号认证模块,注册模块,会话模块,好友模块等等,并对各核心模块的功能做了详细的设计,如考虑到登陆和注册功能所需要的数据不同,而将他们放在不同的视图中,这样对于用户而言可以有很好的区分度。然后依据需求分析绘制了相关的数据处理和交互流程图,最后给出整个系统的具体实现过程和测试数据。系统以eclipse平台来进行开发(ADT插件),采用了XMPP、Android、Java等相关技术来实现,以openfire服务器为支持,在不以牺牲程序强壮性的基础上降低了开发成本,同时也为后期维护提供了不少简单。此外,本次设计是以安卓为平台而不是IOS,也尽可能的降低了用户的使用成本,具有比较好的普及性。关键词:XMPP;Android;即时通信ABSTRACTAndroid platform which became the largest mobile platform after IOS platform has been beyond so quick with the help of 4G, there has been further development, in this context, this paper designs instant messaging system based on Android platform, taking into account the XMPP is communication protocols based on open source XML format and XML also have highly scalable, so, Android platform combines XMPP protocol-end communication system is a very good development prospects, the benefits was recognized by many large IM company.This article describes the development process based on the Android platform, instant messaging systems, including the client interface design, and the realization of the core functions. In the whole process of design and implementation of the system, the function modules do a detailed division, including landing module, account authentication modules, register module, session module, buddy module, etc., and functions of the core modules of a detailed design, data such as landing and taking into account the needs of different registration functions, and put them in different views, so for the user can have a good distinction. Then draw the relevant requirements analysis based on data processing and exchange process, and finally give a specific implementation of the system and test data.Systems is developed with the help of eclipse platform (ADT plugin), using XMPP, Android, Java, and other related technology to achieve to openfire server support, without sacrificing robustness of the program on the basis of reduced development costs, but also for the post- maintenance of a lot easier. In addition, this design is based on the Android platform instead of IOS, as much as possible to reduce the users cost, with a relatively good popularity Keywords: XMPP; Android ;IM目 录摘 要Abstract第1章 绪论11.1课题背景11.2课题意义11.3系统功能2第2章 开发工具介绍42.1 JAVA语言简介42.2 android简介52.3 XMPP协议62.4 Openfire服务器简介72.5 Gstreamer简介8第3章 需求分析93.1 性能需求93.1.1 实用性和先进性93.1.2 整体性和可靠性93.1.3 易使用和易维护93.2 用户需求93.2.1 一般用户93.2.2 服务端管理人员103.3 环境需求113.3.1 硬件环境113.3.2 软件环境11第4章 系统设计124.1 软件设计的原则124.2 系统概述124.3 系统功能模块134.4 数据库设计144.4.1 逻辑结构设计144.5系统详细设计154.5.1 登陆认证154.5.2 注册164.5.3 通信功能17第5章 系统实现185.1 软件开发环境185.2 人机界面设计185.2.1 界面设计原则185.2.2 登录界面设计195.2.3 注册界面设计215.2.3 主界面设计225.2.4 好友对话界面设计235.3 客户端功能模块实现245.3.1 登录模块245.3.2 用户注册模块265.3.4会话模块275.4 服务端admin功能模块实现305.4.1 会话管理305.4.2用户添加与维护325.4.3群聊天室与广播34第6章 系统的测试与维护356.1 测试计划和要点356.1.1 用户登录模块测试要点356.1.2 用户注册模块测试要点356.1.3 对话模块测试要点356.2 测试用例356.2.1 用户登录模块测试用例设计356.2.2 用户注册模块测试模块等价类测试用例设计366.2.3 对话模块等价类测试用例设计366.3 测试结果37第7章 总结与展望38参考文献39致 谢40III浙江理工大学本科毕业设计(论文)第1章 绪论1.1 课题背景近几年随着智能手机和移动通信高速发展,通信技术从GPRS、2G,3G再到现在的4G,发展速度不可不谓迅猛。现代人的生活工作节奏的越来越快,移动通信终端的产品及其相关服务也来越多,人们对其依赖也自然达到了前所未有的高度,成了人们生活中不可或缺的一部分。而通信这个自手机诞生以来就拥有的最基本的功能和要求,在智能手机上又有了新的演绎方式即时通信系统(即指能够即时发送和接收互联网消息等的业务),它可以让用户通过无线网络,在网上看到特定的通信对象(如好友)是否在线,是否有信息推送1。如果对方是在线状态,双方还可以通过文字、语音,视频等方式进行交流。相比于传统的通信手段具有方便、高效、廉价、即时的优势。自然能在通信的市场中取得份额。而在各个终端操作系统中,用户最多的就是IOS和Android,两者平分了大部分的市场份额。其中Android 是Google 为了应对IOS所带来的压力而推出的一个基于Linux 内核的手机操作系统这是一个包含底层框架, 中间件和开发环境的一套完整的平台系统。它采用了流行的组件式程序设计,带有针对性移动设备的Dalvik 虚拟机。自推出以来就因其开源免费的特性而被越来越多的开发者和使用者所接受,市场的占有率也是一路高歌。尤其是对于程序员而言,它的开放体系架构,所提供的非常好的开发和调测环境,本身丰富的UI界面库,能程序员十分轻松的上手,并掌握和接受它。基于此条件下,android的各种应用与服务在近几年也如雨后春笋般出现在人们的生活中,改变着人们的生活习惯和方式。凭借Android平台的广泛认可和4G网高数发展带来的便利,再加上人民对新平台通信的需求的日益增长,目前在Android平台上的即时通信软件如微信,手机QQ,易信等都有着不错的用户认可度和市场份额。因此设计基于Android平台的即时通信系统有着非常好的实用意义。1.2 课题意义Android设备的大力普及,再加上Android技术平台本身具备的开放性、友好性,以及谷歌公司对其的重视,促使了相关的电子企业和个人开发者都纷纷投入Android应用开发的大潮中,随之而来的是市场上涌现出大量的用于各行各业,形形色色的安卓应用。在诸多应用中,端到端通信IM软件的实时性最强,也最便捷,沟通效果最好,它降低了交流的成本、提高了沟通的效率,避免了在打电话上浪费的时间和精力,使人与人之间即时交流通信更加方便和便捷,真正实现了随时随地无障碍沟通。由此可见智能手机终端的即时通信系统已经大大改变人们的生活和沟通方式。综上所述,本文研究的基于安卓平台下的XMPP即时通信系统设计具有非常重要的社会现实意义和应用价值。1.3 系统功能系统主要功能如下:客户端功能:1、 用户的注册和登录,以及个人信息的修改:对于第一次登陆的用户而言,他们可以连接到openfire服务器上并实现个人账号的注册(注册时需要填写ID,昵称,邮箱并对密码进行设置),对于已经有账号的用户来说可以在联网状态下,实现登陆账号的功能,并对好友显示其在线状态。在系统菜单中还提供了个人信息的修改功能,包括对昵称,邮箱,密码等的修改。并且还可以修改个人的状态来通知好友。2、 即时消息处理,消息发送与接收,查看聊天记录:已经登陆的用户,可以收到在离线期间好友给他们发送的信息推送。并且在程序运行期间,他们可以监听到好友对他们的回话请求,并选择是否开始进行对话,还可以查看和好友的聊天记录。 3、 好友的分组管理,添加、更改、删除分组:已经登陆的用户可以在联网的前提下通过搜索用户的账号来进行好友添加的操作,并且可以实现在添加的同时对其分组。对于组别而言,用户自己也可以直接创建,对于已创建的组别,你可以对其进行再命名的操作,也可以删除该组。不过如果该组成员为0,系统将会默认登出后删除。4、 好友信息管理,更改好友信息,添加、删除好友等:如果好友已有账号你可以通过对其账号的搜索来添加好友,再其同意以后用户会受到一条添加成功提示然后他就在你的好友分组中,在添加好友之后,你可以对好友的信息进行管理,比如修改其备注名,当然你也可以通过长按来实现删除好友的功能。5、 系统设置:系统设置包括登出,对好友列表的刷新等。6、 用户之间可以音视频交流(Gstreamer实现):在确保双方都是联网的前提并且互相都是好友的前提下,用户之间可以实现实时的音视频交流,服务端功能:1、实现会话的管理:openfire自带有会话的管理选项包括客户端会话,服务端回话等。并且还有发送管理信息的功能。2、通信功能:openfire是一款基于Java语言编写的采用XMPP(Jabber)协议的实时协作(RTC)服务器,可以实现基本的通信,包括用户与服务器端的通信,服务器之间的通信。3、存储用户的个人信息和联系人信息名单,同时也要在服务器端保留用户在离线时所收到的信息,用户注册,用户的身份验证等:openfire服务器可以存储账号的个人信息包括账号,名称,密码,邮箱等,通过插件拓展甚至可以实现用户头像保存。并且其基于asmack库也是支持离线消息的。39第2章 开发工具介绍2.1 JAVA语言简介Java是一门能自动回收内存,代码健壮安全的高级语言。它不仅支持多线程,还能在执行过程中动态加载并解释执行源码,具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群2。Java语言基于JVM虚拟机,所有的JAVA程序都是运行在虚拟机之上,不同的企业和组织可以根据规范实现自己的不同版本需求。如SUN公司自身提供了多个版本的JDK,而像IBM这样的大公司也有自己的JVM实现,甚至Android都是基于类似的Dalvilk虚拟机。Java语言的特点:1.平台无关性:Java程序的编译和执行过程,显示了它跨平台的先天优势,同时因为JAVA语法中的数据类型与机器无关的特点和JVM虚拟机的引入,奠定了Java程序跨平台的特性。2. 安全性(1)Java语言是强类型语言,因此编译器会对Java对象类型进行检查,保证类型兼容。(2)Java中不存在指针,因此内存绝对是安全的。 (3)Java后台运行了垃圾回收线程,可以随时回收那些不需要的内存。(4)Java的类加载器机制,可以确保运行的都是受信代码。综上所述,Java是一门安全的健壮的高级语言。 3. 面向对象Java面向对象主要体现在以下方面:(1)抽象:Java支持抽象类,它体现了数据抽象的思想,是实现多态的一种机制。(2)继承:Java支持单继承,如果要实现多继承,可以通过多个接口的方式变通实现。使用继承,实现了软件代码的复用3。(3)封装:Java语言通过私有变量封装自己的数据,避免数据的共享和随意修改。(4)多态:Java语言通过动态加载类、方法重载等实现了面向对象的多态特性。2.2 android简介Android是一款基于Linux的开放源代码的操作系统4。主要使用于移动终端上,例如智能手机和平板,由Google公司开发,推出的主要目的是为了和当时如日中天的IOS直接竞争。绝大多数的人喜欢称呼其为安卓。Android操作系统的开发在当初主要是面向由智能手机。2005年8月被Google公司收购并注资,2007年11月,谷歌公司联合手机市场上的84家较大硬件制造商、软件开发商和电信运营商,创建了开放手机联盟来共同研发改良安卓系统4。之后Google公司以Apache开源许可证的授权方式向大众授权,发布了Android的第一份源代码。Android最先应用于智能手机,随后又逐渐扩展到平板电脑和其他领域上,如智能电视、数码相机、手表甚至是游戏机,发展速度可谓前所未有。2011年第一季度,Android操作系统在全球的市场占有率就超过当是红极一时的塞班系统,跃升全球第一。 在2013年的第四季度的时候,基于安卓平台的智能手机份额就已经达到了恐怖的78.1%,在同年的九月份,也就是安卓诞生5周年之际,它的设备数量就已经突破了10亿台的大关。2014第一季度Android平台的移动广告流量来源已占全球份额的42.8%,首度超越iOS。Android平台有如下特性:1. 应用程序框架是支持组件重用和替换的5。我们可以自己删除系统中不喜欢的应用程序,自由的安装应用程序。2. 拥有专门为移动设备设计的Dalvik虚拟机。Android应用程序在编译的过程中,将用DX工具把Java编写和编译的类文件转换成后缀名为.dex的文件并执行。Dalvik虚拟机是基于寄存器的,相对于传统的Java虚拟机有着更快的速度。3. 内部集成了基于开源的WebKit引擎的浏览器。再有了内置的浏览器之后,就将意味着WAP应用终结时代的到来,真正的移动互联网时代已然开启,手机就是一台“微型计算机”,可以随意的和互联网交互。4.对图形库的优化,包括2D和3D图形库,其中3D图形库是基于OpenGL ES 1.0。这也就意味着它有强大的图形处理能力,可谓是游戏开发者的福音。毕竟现如今4G最为重要的应用就是手机游戏和视频了。5. 轻量级的数据库SQLite,用它作为结构化的数据存储,便捷而高效。6. 丰富的开发环境包括SDK、AVD、带有错误提示的Logcat、和Eclipse开发插件(ADT)、以及多入牛毛的第三方库。2.3 XMPP协议目前主流的IM协议有四种,包括:可扩展消息与存在协议(XMPP)、空间和即时信息协议(PRIM)、即时信息和空间协议(IMPP)、针对即时信息和出席扩展的会话发起协议SIP(SIMPLE) 6。在这四种主流协议中,XMPP协议具有很好的灵活性和扩展性7。由于XMPP协议是高度自由、高度开放的协议,易于掌握和理解,而且在服务器、客户端、插件、源代码库等方面,有多种实现。任何遵循XMPP协议的软件,可以实现相互通讯。加之Google公司开发的Gtalk软件也是基于XMPP协议的及时通讯软件,同时很多软件巨头也对XMPP协议进行支持,促进了XMPP协议的推广和普及。因此,研究XMPP协议及基于此的即时通讯软件的设计与实现,有深远的意义。XMPP在客户端间,和服务端间的通信都使用TLS (Transport Layer Security)协议作为通信通道的加密方法,以此来确保通信的安全。使用了和SASL及TLS等相关的技术更加增强了通信的安全。如图2-1所示:图2-1 XMPP的结构图XMPP的基本网络结构中定义了三个角色:Client、Server和Gateway。如图2-1所示, 如果XMPP ClientA和XMPP ClientB进行通讯,首先XMPP ClientA登录XMPP ServerA进行身份验证,身份验证通过后,XMPP ServerA搜索本地用户是否存在XMPP ClientB,如果存在,则建立连接,如果不存在,XMPP ServerA则通过DNS Server查询到XMPP ServerB,进而XMPP ServerA与XMPP ServerB交换数据,XMPP ServerB查找木地服务器中是否存在XMPP ClientB,存在,则将XMPP ClientA和XMPP ClientB建立连接,如果不存在,则继续上面的步骤。如果XMPP ClientC与非XMPP ClientD进行通讯,首先XMPPClientC登录Protocol Gateway进行身份验证,验证成功后,Protocol Gateway与Other Server进行信息交换,由OtherServer查找非XMPP ClientD,查找成功后,则建立XMPP ClientC和非XMPP ClientD之间通讯。图2-2 XMPP的流程图2.4 Openfire服务器简介Openfire (原名Wildfire或者JiveMessenger)是一个基于Java语言采用XMPP通信协议的开源服务器7。它具有非常优秀的跨平台能力。Openfire的安装和使用都非常简单,并使用Web来进行管理。单台服务器能够实现上万用户的并发。Openfire的具体实现:两个用户如果想要进行通讯,首先要连接到Openfire服务器上,在服务器获取一些连接信之后,两个用户之间才能够建立起连接。当两个用户之间顺利建立连接后,用户就可以采用点对点的通信方式来发送接收消息。选择openfire作为即时通讯服务器主要是因为其自身的诸多优点:openfire服务器采用了基于Web的管理界面,这对管理员而言使用和管理都十分方便。其次是它实现了插件的机制,这就意味着他的扩展十分方便,以插件的形式,可以随时添加和删除特定的功能模块,基本上不用再进行二次开发。Openfire是一个开源的服务器,开发人员可按照自己的喜欢和需求来定制。它还提供了对SSL/TLS的支持。自带有嵌入式的HSQL数据库,还支持其他多种数据库的连接。2.5 Gstreamer简介GStreamer是一个开源的多媒体框架库8。其核心思想是管道思想,这就意味着利用它来构建一系列的面向不同格式的不同功能的媒体处理模块,包括从最简单的ogg播放功能到比较复杂的音频和视频的处理。GStreamer 大部分内容是按照 pipeline 模型封装的插件,因此它的拓展性也是十分优秀的。GStreamer 插件大部分都是通过将已有多媒体库进行封装,而得来的。有一些公司还通过利用GStreamer 框架来提供商业服务围绕。例如提供专有插件,甚至包括提供一些应用开发和相关的咨询服务。为了搭建一个能在各平台上都稳定运行的 GStreamer 基础,以便于商业化的开展, GStreamer SDK 就此孕育而生。而它支持Android平台,则无疑为其在移动端的发展提供了很好的铺垫。第3章 需求分析3.1 性能需求3.1.1 实用性和先进性系统设计时应以服务端管理员方便管理、客户端用户方便使用为首位。系统的设计应最大限度的实现即使通信的方便沟通的特性。在系统设计中以用户操作傻瓜化为标准,但同时也要实现即时通信的可靠性和稳定性,保证正常使用的前提下能够准确通信和收发信息。系统平台既要体现出当前最新的技术,又要使系统易于后期的修改、扩张,并保证其良好的兼容性。因此在软件设计的过程中,我们既要体现当前的最新技术又要考虑到系统后期维护的方便,尽量增长系统的生命周期。3.1.2 整体性和可靠性即时通信系统作为一款通讯类软件,在保证拥有一些基本的功能模块的基础上,还要做好系统的总体设计,使用户的使用体验更加的舒适自然,包括在线和离线的信息推送,登入注册操作是否方便快捷等等。从而达到充分发挥系统的整体效能的效果,同时在系统分析的时候还要充分考虑整个系统软硬件的可靠性程度和兼容性,应当具有较强的稳定能力。能在大多数满足要求的终端上尽可能的长时间正常运作。3.1.3 易使用和易维护要求做到界面清晰,操作通俗易懂,方便简单,易于上手,即使对于一些新的用户,也能一看就能知道基本的操作方法,对于一些比较新颖的操作,也能在提示的帮助下快速习得,并且整个系统要易于服务端的操控和后期的维护。3.2 用户需求用户需求通过用例图(use case diagram),从外部用户的角度描述系统的功能,机器逻辑关系,并指出功能的执行者10。以下使用用例图的方式来描述各用户之间的用例关系。3.2.1 一般用户一般用户有添加好友,好友聊天,个人设置,消息管理等功能。普通用户用例图如图3-1所示。图3-1 一般用户用例图3.2.2 服务端管理人员管理员在登陆账号以后可以使用,用户操作,回话管理,群组管理等操作,管理员用例图,如图3-2所示。图3-2服务端管理人员用例图3.3 环境需求3.3.1 硬件环境服务器端的最低配置是openfire能正常运行的前提下,在最低配置的情况下,服务器的运作往往不尽如人意,现在的普通价位的pc机,其硬件性都已经相当出色,而且价格也很便宜,因此给服务器端配置一台性能不错的硬件并不困难,本系统服务器端的配置如下:处理器:Intel(R) Corei5 5400h内存:8GB硬盘空间:256GB显卡:NVIDIA GT750M。因为客户端主要是基于android操作系统,所以对客户端的硬件要求不高,只要是在主流的4.0版本之后的终端,基本都是可以运行的,需要的配置最好能接近或者高于下面的配置:处理器:双核以上,最好四核分辨率:720p以上RAM:1G或更高ROM:8G以上带有摄像头3.3.2 软件环境服务器端要求如下:操作系统:windows 7以上 服务器:openfire开发语言:java 用户端要求如下:开发工具:eclipse(ADT)开发语言:java 操作系统:android4.0.3第4章 系统设计4.1 软件设计的原则1模块化所谓的模块化就是指甲将程序划分成命名独立还可以独立访问的模块11。每个模块只需要完成一些比较单一的特定的子功能,最终把这些模块集成在一起,就构成了一个整体。非常方便的完成指定的功能并且满足用户的不同需求。安卓客户端的开发就是采用了这种经典的MVC设计模式,将系统的视图层、控制逻辑层以及数据模型层进行完全分离,实现客户端各个模块的高内聚、低耦合,同时也方便程序员后期的维护和扩展。另外Android系统自身也是基于MVC设计模式的一种实现12。换句话说,安卓平台在解耦以及设计方面具备天然的优势,在Android程序开发过程中,视图层方面的设计和实现,大部分可以通过配置相应的XML文件来实现,在这之后只要再加上一些适当的编码,就能很轻松的实现视图层的功能开发。2抽象抽象是一个非常常用的概念,从众多的相似而又有不同的事物之中,抽取出他们共有的特征,舍弃掉非本质的一些特质。比如,在一人群中有形形色色的人,有老师,有学生,有工人,但是它们又都属于人这样的一个抽象概念,人这个概就是他们的特性也就是说它就是一个抽象概念13。3信息隐藏应用模块化思想时,自然而然的就有了另外一个相关的问题:“为了得到最好的一组模块,应该怎样去分解这个软件呢” 14。信息隐藏原理指出:在设计和确定模块的过程中。要使得一个模块内包含的信息(无论过程还是数据)对于不需要这些信息的模块来说,是无法访问的。就相当于一个只有出入口的封闭工厂一样。4.2 系统概述本系统通过在Eclipse 平台上添加了adt插件来实现android开发环境的搭建。通过sdk的下载来兼容不同版本的用例。还用到了具体实现XMPP协议的asmack库。并且是使用openfire服务器,网站的搭建实现完全免费,大大降低了我们的开发成本。本次毕业设计主要任务还是集中在客户端模块,客户端需要实现较多的功能,而服务器则只需要通过添加一些插件就可以实现一些特定要求。这2大模块分别独立实现各自功能,只有较小的相互关联。4.3 系统功能模块依据需求分析阶段所得到的用例图,采用软件工程中的软件设计的概念和原理15。在与用户成分协商后,在保证系统基本要求的前提下,结合系统新的业务流程确定系统必须具备的所有功能,由此得到了即时通信系统的系统功能模块详细设计。系统功能模块图如图4-1,4-2所示。图4-1 一般用户功能模块图图4-2 admin功能模块图4.4 数据库设计4.4.1 逻辑结构设计本系统在使用openfire服务器提供的端口,同时也在使用它所提供的数据库,这是一个基于hsql内嵌数据库的表,因为其满足了开发的绝大部分要求,所以本设计就采用了这个数据库。通过对本系统进行的需求分析、系统流程设计以及系统功能结构的确定,规划出系统中使用的数据库实体对象16。用户信息如表4-1所示。表4-1用户信息表(ofuser)usernameencryptedPasswordnameemailcreationDatemodificationDateadmind6076c6Adminis111001268815680liufan2d1ddfcc6c96Aaa222001268874515001268874515171test01f989c497d111333001268874527001268874527578zksa3e2db222444001268875097001268875097250用户组表(ofgroup):只支持单级组,但一个用户可以同时属于多个组如表4-2所示。表4-2用户组属性表(ofgroupprop)groupNamedescriptionGroup1TestGroupGroup2Group2 Detail可以看出,每个组有三个属性,sharedRoster.displayName是组显示在客户端列表上的名称,sharedRoster.groupList是组可以共享给那些组的列表,sharedRoster.showInRoster显示组的共享属性,如果是对所有用户就显示everybody,如果不共享就显示nobody,如表4-3所示。表4-3共享表groupNameNamepropValueGroup1sharedRoster.displayNameGroup1sharedRoster.groupListGroup1sharedRoster.showInRostereverybodyGroup2sharedRoster.displayNameGroup2sharedRoster.groupListGroup2sharedRoster.showInRosternobody用户分组表(ofgroupuser)一个用户可以同时属于多个组,如表4-4所示。表4-4用户分组表(ofgroupuser)groupNameusernameadministratorGroup1test011Group1test020Group2liufan0Group2test0104.5系统详细设计从功能模块的角度来看,该系统各个模块之间的关联性并不大,功能的相似性也不不是很多。因此分开叙述相对比较方便。不过从整体的角度而言,各个功能的最终还是要相互组合,只有这样才能让程序的功能统一而不片面,形成一个整体。4.5.1 登陆认证对于登陆认证而言,其功能实现大致分成两个阶段:服务端的认证以及客户端的初始化。在前一阶段,首先要与服务器进行连接,在连接成功之后键入用户输入的用户名和密码,接着向后端的openfire服务器发起一个认证请求,服务器在收到认证请求之后,会查询hsql数据库中的信息进行身份认证,如果认证成功,就返回成功的消息,同时在后端服务器的会话管理器新增加一个活动会话,用来处理该客户端的请求。如果登陆失败客户端就会弹出一个toast,告诉用户登陆失败。在第二个阶段,客户端如果收到了成功的返回消息,则会弹出一个toast,告诉用户登陆成功,并会进入客户端的主界面,也就是好友列表,在进入前还会进行系统初始化,从服务器加载离线消息,启动聊天监听器,然后修改状态为在线,向系统发送一条广播,通知好友自己的状态为在线。其流程图大致如图4-3所示:图4-3 登录序列图4.5.2 注册注册功能首先是建立与服务器的通信,如果通信正常的话,就对用户键入的数据进行判断,如果有带*号的数据没填写就toast用户,如果密码不一致就提示用户密码不一致。再修改数据后就把数据发到服务端,服务端对数据进行判断,看该账号是否存在,如果存在就告诉用户该账号已存在,如果不存在则创建账号。提示队友创建账号成功。大致流程如图4-4所示:图4-3 注册序列图4.5.3 通信功能客户端通过GPRS,4G或者wifi等无线网络连接到openfire服务器(通信网络协议为tcp协议,应用层协议则是基于xmpp协议)在两个客户端都是好友的前提下,如果A用户想与B用户进行通信,则点击B用户,编辑信息并发送,服务器端受理该请求,并将这个消息缓存到队列中,在用户B下次心跳时检测是否有新的消息时,根据消息目的地是否和用户B匹配来通知用户B获取最新的消息,交互流程图如图4-5:图4-5客户端通信流程图第5章 系统实现5.1 软件开发环境软件开发环境(Software Development Environment)是指在基本硬件和宿主软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE17。它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供统一的支持。系统开发主要所用的软件工具有:Eclipse程序开发工具、xmpp具体实现的asmack库、Photoshop 6cs图片处理工具等。5.2 人机界面设计5.2.1 界面设计原则界面的设计尽量的简洁,逻辑也尽量的合理,与一般的IM软件有较多的共同点,这样用户上手也比较快,学习成本不会太高。对于一些比较隐蔽的功能,最好能有一些必要的操作流程介绍,这样可以减少用户的学习成本。对于一些不必要的比较专业的设置,系统最好将它初始化并封装,而不是交由用户设置。在程序的书写过程中,尽量做到程序的低耦合。不想关的功能尽可能的减少联系。例如可以把连接单独的写成一个包,这样在需要的时候就可以调用它了,而不是在需要的时候去书写它,比如在登陆的时候,就没有必要再书写一遍了,而是可以直接调用这个方法了。XMPPConnection.DEBUG_ENABLED = false; ConnectionConfiguration config = new ConnectionConfiguration(SERVER_HOST, SERVER_PORT,SERVER_NAME);config.setReconnectionAllowed(true);config.setSendPresence(false); config.setSecurityMode(ConnectionConfiguration.SecurityMode.enabled);config.setSASLAuthenticationEnabled(false);File file =new File(/mnt/sdcard/security/);file.mkdirs();config .setTruststorePath(/mnt/sdcard/security/cacerts.bks);config.setTruststorePassword(123456);config.setTruststoreType(bks);config.setSASLAuthenticationEnabled(true);connection = new XMPPConnection(config);connection.connect();configureConnection(ProviderManager.getInstance();上述代码为客户端与服务器简历连接的部分关键代码,所有操作都是在连接建立的前提上,所以这个还是非常的实用的。5.2.2 登录界面设计登录界面是程序的第一张脸,设计尽量较为简洁大方。运行程序首先是一张图片的显示,可以很好的提示程序的运行。然后是登陆的主界面,主要包括了登录所必需额账号密码框,在登录界面还提供了记住密码的选项,方便了下次的登陆,体现了软件设计的人性化原则。在注册界面还有注册按钮可以直接跳到注册的界面,更加的便捷,不会影响用户体验。主要代码如下:public class WelcomeActivity extends Activity private Handler mHandler;public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.main);initView();public void initView() / 如果是首次运行mHandler = new Handler();mHandler.postDelayed(new Runnable() public void run() goLoginActivity();, 1000);/* * 进入登陆界面 */public void goLoginActivity() Intent intent = new Intent();intent.setClass(this, LoginActivity.class);startActivity(intent);finish(); 页面效果图如图5-1所示:图5-1 IM系统登录界面5.2.3 注册界面设计注册界面告诉用户注册账号所必需的信息,对第一次使用的用户有很好的引导作用,并且对用户的输入信息有初次的比较和判断,比如是否有必选项还是空的,密码是否一致等,因此可以确保用户注册账号信息的正确性。在登陆后还有对登陆结果的提示,比如登陆失败,登陆成功等。还提供了是否记住密码的选项,可以在登录之后的保存账号和密码,这样下一次登录就可以不用再输入密码账号,十分便捷注册界面大致如图5-2所示:图5-2 一般用户注册界面设计注册界面的主要核心代码如下:if (accounts.length() = 0 | password.length() = 0) /账号和密码不能为空DialogFactory.ToastDialog(this, TT, 帐号密码不能为空); else try SmackAndroid.init(LoginActivity.this);/ 连接服务器XmppConnection.getConnection().login(accounts, password);/ 连接服务器成功,更改在线状态Presence presence = new Presence(Presence.Type.available);XmppConnection.getConnection().sendPacket(presence);/ 弹出登录成功提示DialogFactory.ToastDialog(this, O(_)O, 登录成功了!);/ 跳转到好友列表Intent intent = new Intent();intent.putExtra(USERID, accounts); / 接受IDintent.setClass(LoginActivity.this, FriendListActivity.class);startActivity(intent); catch (XMPPException e) XmppConnection.closeConnection();handler.sendEmptyMessage(2);e.printStackTrace();5.2.3 主界面设计 主界面就是用户成功登陆之后的界面,用户的操作基本上都是在这个基础之上进行的。这里要尽量把系统的功能展现给用户,并且能让用户很好的明白操作流程。具体页面效果图如图5-3所示:图5-3 主界面首页设计5.2.4 好友对话界面设计好友的对话是十分重要的一个部分,这是要实现的的最基本要求,即时通信系统的灵魂也是在此。其效果图大致如如图5-4所示:图5-4 好友对话界面设计5.3 客户端功能模块实现5.3.1 登录模块用户在有网的前提下能登录并连接服务器获取数据。查询部分由于基本相同,如下给出关键代码: private void submit() String accounts = mAccounts.getText().toString();String password = mPassword.getText().toString();/accounts = accounts+FriendListActivity.SERVICE_NAME ;if (accounts.length() = 0 | password.length() = 0) DialogFactory.ToastDialog(this, TT, 帐号密码不能为空); else try SmackAndroid.init(LoginActivity.this);/ 连接服务器XmppConnec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论