Android手机即时通讯软件的设计与实现即时通信IM(Instant Messageing)是目前Internet上最为流行的通讯方式,而各种各样的即时通信软件也层出不穷;服务提供上也提供了越来越丰富的通信服务功能。随着互联网的发展,即时通信的运用日益广泛,即时通信软件业方兴未艾。
本设计利用Jabber/XMPP的体系结构,构建了一个基于XMPP协议的即时通信系统,包括即时通信系统的客户端和服务器。其中服务器采用开源的Jabber服务器Openfire,客户端基于XMPP核心及扩展协议,利用Beem的开发包Asmack进行研究开发。设计了一个与Openfire互联通信的客户端系统,实现与客户端的文字实时数据通信等功能。 HM000052
本设计采用了常见的MVC设计模式,对系统进行了分层建模,从HTTP传输,XMPP协议解析到客户端的各个模块部分都进行分析设计,提出了系统的体系结构和整体构架设计方案,阐述了系统实现应用的关键技术,建立了可扩展的会话模型,采用松散耦合的方式设计,实现了Android平台上基于XMPP协议的移动即时通信系统。
关键字:即时通信系统;Android平台;XMPP协议;JAVA语言;MVC设计模式
2.1 Java的发展与应用
Android上的应用程序大多是用JAVA语言实现的,因此熟悉JAVA基础知识十分有必要,可以说是系统设计能够进行下去的最基础的条件,因此这里我将简要介绍JAVA基础的整体知识框架。
2.1.1 Java的发展查看完整请+Q:351916072获取
Java编程语言是一种高级编程语言。它起源于Sun公司的一个叫Green的项目。其原先的目标是将其开发的嵌入式软件开发系统运用在家用电器上。使得家用电器智能化。但是由于用C++编写改系统时,由于其复杂,安全性差等诸多问题。于是该项目小组在“简单的,可靠的,紧凑的并易于移植的”的理念下开发了一个小型的计算机语言并将它命名为Oak,但是后来由于在注册登记时,该项目已被登记,于是后来变将它改名为Java。Java是一种跨平台、跨网络、跨语种、跨时间的语言。它具有非常强的可移植性,它提出的理念是:Write once, run everywhere。并且Java语言易于学习和使用,可能比一般语言如C,C++,更容易入门[6]。
2.1.2 Java基础的整体知识框架
(1)对象的初始化
Ⅰ、非静态对象的初始化 是在在创建对象时,对象所在类的所有数据成员会首先进行初始化, 在所有类成员初始化完成之后,才调用本类的构造方法创建对象, 构造方法的作用就是初始化。
Ⅱ、静态对象的初始化 是在程序中主类的静态变量会在main方法执行前初始化。不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时 未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化 [7]。
(2)继承时,对象的初始化过程
Ⅰ、主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。
Ⅱ、主类静态成员的初始化。
Ⅲ、主类的超类由高到低进行默认构造方法的调用。注意,在调用每一个超类的默认构造 方法前,先进行对此超类进行非静态对象的初始化。
Ⅳ、主类非静态成员的初始化。
Ⅴ、调用主类的构造方法 [8]。
(3)、关于构造方法
Ⅰ、 类可以没有构造方法,但如果有多个构造方法,就应该要有默认的构造方法,否则在继承此类时,需要在子类中显式调用父类的某一个非默认的构造方法了。
Ⅱ、在一个构造方法中,只能调用一次其他的构造方法,并且调用构造方法的语句必须是 第一条语句 [9]。
(4)、有关public、private和protected
Ⅰ、无public修饰的类,可以被其他类访问的条件是:a、两个类在同一文件中,b、两个类 在同一文件夹中,c、两个类在同一软件包中。
Ⅱ、protected:继承类和同一软件包的类可访问。
Ⅲ、如果构造方法为private,那么在其他类中不能创建该类的对象。
(5)、抽象类
Ⅰ、抽象类不能创建对象。
Ⅱ、如果一个类中一个方法为抽象方法,则这个类必须为abstract抽象类。
Ⅲ、继承抽象类的类在类中必须实现抽象类中的抽象方法。
Ⅳ、抽象类中可以有抽象方法,也可有非抽象方法。 抽象方法不能为private。
Ⅴ、间接继承抽象类的类可以不给出抽象方法的定义。
(6)、final关键字
Ⅰ、一个对象是常量,不代表不能转变对象的成员,仍可以对其成员进行操作。
Ⅱ、常量在使用前必须赋值,但除了在声明的同时初始化外,就只能在构造方法中初始化 。
Ⅲ、final修饰的方法不能被重置(在子类中不能出现同名方法)。
Ⅳ、如果声明一个类为final,则所有的方法均为final,无论其是否被final修饰,但数据 成员可为final也可不是 [10]。
(7)、接口interface (用implements来实现接口)
Ⅰ、接口中的所有数据均为 static和final即静态常量。尽管可以不用这两个关键字修饰 ,但必须给常量赋初值。
Ⅱ、接口中的方法均为public,在实现接口类中,实现方法必须可public关键字。
Ⅲ、如果使用public来修饰接口,则接口必须与文件名相同。
(8)、多重继承
Ⅰ、一个类继承了一个类和接口,那么必须将类写在前面,接口写在后面,接口之间用逗 号分隔。
Ⅱ、接口之间可多重继承,注意使用关键字extends。
Ⅲ、一个类虽只实现了一个接口,但不仅要实现这个接口的所有方法,还要实现这个接口 继承的接口的方法,接口中的所有方法均须在类中实现 [11]。
2.2 Android的起源和发展与应用
Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件[12]。
2.2.1 Android的发展
Andy Rubin创立了两个手机操作系统公司:Danger和Android。Danger 5亿美元卖给微软,今年成为了Kin,Android4千万美元卖给Google。 Android是Google于2007年11月05日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。它采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。Google通过与软、硬件开发商、设备制造商、电信运营商等其他有 关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。 Android 作为Google企业战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。全球为数众多的移动电话用户正在使用各种基于 Android 的电话。谷歌的目标是让(移动通讯)不依赖于设备甚至平台。出于这个目的,Android 将补充,而不会替代谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品[14]。
2.2.2 Android特征
Android应用框架包含很多应用程序组件,这些组件在开发中可以被反复利且软件开发人员可以基于己有的组件开发出属于自己的特色组件,这样可约开发成本,提高软件开发效率。
Dalvik虚拟机是Android所采用的Java虚拟机,区别于甲骨文的Java虚拟它在性能上更加出色,占用资源更少,运行速度快,更适合移动设备平台。
内嵌的浏览器基于WebKit引擎,WebKit在开源界非常流行,它是一个优秀浏览器网页排版引擎。Andrnid的浏览器速度更快,因为Android优化了Java的脚本编辑器,当浏览器调用包含Java的web页面时,与其他浏览器相比,页面速度有明显提升。
Android系统包含OpenGLES的3D图形功能,这意味着Andrnid手机支持程序开发,这无疑对游戏开发商有很大的吸引力,Android上的游戏画面体验会更上一层楼[15]。
多媒体技术是基于Open Core Platform来实现的,它是PacketVideo公司开多媒体软件平台,该软件平台功能非常强大。Android的多媒体能够播放大的音视频格式文件,支持的编码包括MP3、3GPP框架等等。通过Open Core多媒体框架,程序员可以开发出属于自己的多媒体应用,比如多人视频会议应用程序等[16]。Android操作系统采用SQLite数据库作为标准数据库,SQLite是一款开源据库,轻巧方便,资源占用率低,性能好,速度快,非常适用于移动嵌入式。所有Android应用程序的数据库都存放在/data/package/databases/下面。
Androld系统为传感器提供了丰富的API支持,现在支持的传感器种类包括加速度传感器(aeeelerometer)、距离传感器(Proximity)、陀螺仪(gyroseope)、环境光照传感器(light)、磁力传感器(magnetiofield)、方向传感器(orientation)和温度传感器(temperature)等。这些传感器为应用程序和游戏开发人员提供了创造各种有趣应用的前提条件,现在加速度传感器己经普遍应用于游戏中了[17]。
语音搜索为用户提供了将语音数据转换成文本数据或手机操作命令的功能,如果用户想要使用Google搜索引擎搜索,只需要对着手机说出想要搜索的内容,即可实现手机网页搜索。
2.2.3 Android系统架构
Android系统采用分层的架构实现,从下到上依次是Linux内核(Linux Kernel)、Libraries、C/C++函数库、dalvik虚拟机、应用框架(Application Framework)以及最上层的应用程序(Applications),如图2.1所示[19]。
3.1 系统软件设计
◆设计内容:
以Android系统为核心,附加通信协议。配以openfire服务器为系统提供通讯服务,实现即时通讯的基本内容。设计内容主要如下:
(1)配置Android,eclipse,Openfire等基本信息;
(2)配置网络服务器信息;
(3)登陆模块软件实现;
(4)注册模块软件实现;
(5)好友列表及其状态模块软件实现;
(6)即时聊天模块软件实现;
(7)文件传输模块软件实现;
(8)其他模块实现。
摘 要 Ⅰ查看完整请+Q:351916072获取
Abstract Ⅱ
第一章 绪论 1
1.1 背景与意义 1
1.2 课题的提出 2
1.3 本文研究内容 3
第二章 安卓手机软件开发的原理和现状 4
2.1 Java的发展与应用 4
2.1.1 Java的发展 4
2.1.2 Java基础的整体知识框架 4
2.2 Android的起源和发展与应用 6
2.2.1 Android的发展 6
2.2.2 Android特征 6
2.2.3 Android系统架构 7
2.2.4 Android应用组件 8
2.3 XMPP协议 11
2.3.1 XMPP协议分析 11
2.3.2 体系结构 11
2.4 Openfire服务器 12
2.5 MVC架构 12
2.5 小结 14
第三章 即时通讯系统详细设计 15
3.1 系统软件设计 15
3.1.1 系统设计框图 15
3.1.2 系统软件流程图 16
3.2 主要算法17
3.3 模块详细设计 20
3.3.1 UI设计 20
3.3.2 用户登录模块 20
3.3.3 用户注册模块 21
3.3.4 好友列表及用户状态设置模块实现 23
3.3.5 用户聊天模块 23
3.3.6 文件传输模块 25
3.3.7 Openfire服务器的实现 27
3.4小结 30
第四章 软件运行和调试 31
4.1登陆模块调试 31
4.1.1 openfire的配置 31
4.1.2 用户登陆openfire 31
4.2用户注册模块调试 32
4.3好友列表模块调试 34
4.4即时聊天模块模块调试 35
4.5文件传输模块模块调试 36
4.6小结 37
第五章 总结与展望 38
参考文献 40
附 录 42查看完整请+Q:351916072获取
网友评论