1、基于 Android 的校园聊天软件的设计与实现Design and Implementation of Campus Chat Software Based on Android摘 要在智能手机中,Android 平台约占 75市场份额。安卓系统的广泛应用,使得Android 手机应用程序的数量快速增长,即时通讯 APP 的应用范围也更加广泛。另一方面,高校师生需要在教学过程中加强沟通,而开发一款智能手机的校园聊天 APP 则可以满足这一需要,弥补传统教学形式的不足。本文旨在设计并实现一个基于 Android 的校园聊天软件。本文在对校园聊天客户端进行调查研究基础上,进行了需求分析和系统设计
2、,进一步完成了 UI 界面设计,在Eclipse 中使用 Java 语言实现了 APP 各个功能模块。APP 的 IM 通信部分基于第三方通信云 SDK 进行开发。该 APP 的功能主要包括用户登录、注册、聊天框架、通讯录管理、个人信息管理等功能模块。基于 Android 平台校园聊天软件将为管理者、教师、学生之间提供一个高效的沟通平台,它的实施将有利于加强对教育教学过程的监督,增进师生之间、学生之间的学习交流,增强教学互动性,提高教育教学效率。关键词:Android;校园聊天;智能手机ABSTRACTFor smart phones, the Android platform account
3、s for about 75% market share. The extensive application of the Android system allows the number of APPs for Android cellphones to grow rapidly. The application scope of instant messaging APPs has become wider as well. It is necessary for college teachers and students to enhance communication in the
4、teaching process, developing a campus chatting APP for smart phones can exactly meet this need and compensate for the inadequacies of the traditional teaching form. This paper aims to design a kind of Android-based campus chatting software. Through the survey on the campus chatting client, the deman
5、d analysis and systematic design are carried, and the UI interface design is further completed. Java language is used in Eclipse to realize various functional modules of the APP. The IM part of the APP is based on the third-party communication cloud SDK. Functions of the APP mainly include user logi
6、n, registration, chatting framework, address book management, and personal information management. Based on the campus chatting software of the Android platform, it is to provide an efficient communication platform for school managers, teachers and students, the implementation of which will facilita
7、te the supervision on the education process by schools and increase academic communication among teachers and students. The teaching interactivity will be enhanced along with the improvement of the education efficiency as well. Key Words: Android; campus chat; Smartphone目 录1 绪论 31.1 开发背景 31.2 课题意义 3
8、1.3 研究内容 31.4 本章小结 42 软件需求分析 52.1 技术介绍 52.1.1 软件开发的工具和环境 52.1.2Eclipse 介绍 52.1.3 安装 JDK 和 SDK 52.2 需求分析 52.2.1 主要参与者 52.2.2 功能需求 62.3.3 性能需求 72.3 本章小结 73 软件设计 83.1 软件功能设计 83.1.1 客户端功能设计 83.1.2 服务器功能设计 123.2 软件的数据库设计 123.3 本章小结 144 软件实现 164.1 服务器端 164.1.1 配置 OpenFire 服务器 164.1.2 使用 Smack API 与 OpenFi
9、re 建立连接通信 174.2 客户端 184.2.1 用户注册模块 184.2.2 用户登录模块 204.2.3 个人信息设置管理 224.2.4 好友信息管理模块 244.3 本章小结 305 软件测试 325.1 软件功能测试 325.1.1 用户注册模块测试 325.1.2 用户登录块测试 325.1.3 用户设置管理模块测试 335.1.4 好友管理模块测试 335.1.5 消息模块测试 345.2 本章小结 34结 论 35参考文献 36附录:系统主要功能代码 37致 谢 481 绪论1.1 开发背景Android 的英文翻译是指 “机器人“,而 Android 这个词语作为操作系
10、统的名称出现,是谷歌在 2007 年发布了应用在手机平台上的操作系统,自此 Android 作为手机操作系统出现在人们的视野中。同时由于 Android 的操作系统的开源性和可开发性使得以 Android 操作系统的应用软件日益增多。Android 操作系统被越来越多的人接受和使用。目前的 Android 聊天软件基本分为 2 种架构形式:(1)C/S 架构:采取客户端/服务器对等传输的形式,用户方主要使用客户端软件,使用前用户通过网上下载客户端软件,再安装到手机上进行使用,市场上流行的 C/S 架构的聊天软件有以下几种:QQ 、微信、微博、YY、MSN 等;(2)B/S 架构:浏览器/ 服务
11、端对等传输的形式,这种形式下的即时通信工具,一般都是依赖于互联网,作为用户无需下载客户端,用户一般在浏览往网上网页时浏览器会提供一个类似于客户端的界面使用户可以发送消息,此架构一般应用在数据流比较大的电商网站,如 WebQQ 等。1.2 课题意义在高校传统教育教学模式下,普遍存在师生之间就教学内容比较缺乏沟通的现象,教师与学生之间的关系日趋淡漠,学生对老师缺少敬畏感,老师对学生缺少亲切感。然而师生之间的沟通对教学是十分重要的。另外,管理者则希望加强对教育教学过程的监督管理,籍此提高教学质量,强化教学效果。本文研究的校园聊天软件可以为管理者、教师、学生之间提供一个高效的沟通平台,它的实施将有利于
12、加强对教育教学过程的监督,增进师生之间、学生之间的学习交流,增强教学互动性,提高教育教学效率。因此本课题具有重要的实际意义和应用价值。1.3 研究内容本文将针对基于 Android 的校园聊天 APP 进行需求分析、总体设计、UI 界面设计、软件代码编写、软件功能优化、软件测试等工作,实现登录功能、向 XMPP 服务器发送信息包功能、用户好友通讯录获取及相关管理功能、个人信息管理功能、好友文字和语音消息发送功能、图片文件发送功能。论文的章节安排如下:第 1 章:绪论。主要陈述项目的背景和来源,以及所开发产品的意义和未来发展前景,介绍了国内外同类产品的发展现状,最后说明论文主要工作,本人在项目中
13、完成的功能模块以及论文的主要结构。第 2 章:系统相关技术介绍以及理论分析。主要介绍项目开发所使用的技术以及软件的需求分析,包括:Android 手机操作系统的架构和应用程序的分析、软件的用户需求分析。第 3 章:软件设计。对软件的功能进行概要分析,同时对系统所处的子系统的各个功能进行详细的介绍。第 4 章:软件实现。主要对系统的架构、各个模块的功能划分以及功能类图和软件实现截图进行详细介绍。第 5 章:系统测试:主要陈述系统的测试用例以及系统的完成情况。第 6 章:总结与展望。主要介绍了项目完成经验,存在的缺陷以及不足,以及对未来的展望。1.4 本章小结本章主要阐述了软件的开发背景、课题意义
14、和研究能容,通过对上述三部分的详细分析为需求分析章节做好准备。2 软件需求分析2.1 技术介绍2.1.1 软件开发的工具和环境开发环境:Eclipse开发语言:Java模拟机平台:AVD 手机运行平台:Android 2.1 以及上版本开发软件所需插件:JDK、SDKUI 界面处理软件 :Photoshop cs5 音频处理软件:绘声绘影 X15,格式工厂辅助设计工具:ADT、 LogCat、adb 等2.1.2Eclipse 介绍该 软 件 主 要 由 Eclips e 项 目、 Eclipse 工 具 项 目 和 Eclipse 技 术 项 目 三 个 项 目 组 成 , 具 体 包 括
15、四 个 部 分-Ec lipse P la tform、 JDT 、 CDT 和 PD E 。JDT 支 持 Java 开 发 、 CDT 支 持 C 开 发 、 PDE 用 来 支 持 插 件 开 发 、 Ecli pse P l atform 则 是 一 个 开 放 的 可 扩 展 IDE ,提 供 了 一 个 通 用 的 开 发 平 台 。2.1.3 安装 JDK 和 SDK先从网站上找到 JDK 1.6(JREaloneisnot sufficient) 版本并下载,下载完毕后将它安装在 PC 机上并在 PC 机上设置好有关的环境变量,将 JAVA_HOME ,path 等几个设置为适
16、用于 Java 开发的环境变量,最后将其导入你的 JDK 文件路径。SDK 安装 :直接从相关网站下载好 SDK 压缩包,然后打开 Eclipse 软件,在其中找到对应路径将其导入就可以。2.2 需求分析2.2.1 主要参与者根据软件设计的需要,系统主要参与者为用户和系统。用户将对系统发起大部分功能,同时系统的一些设置信息和更新信息需要系统参与。(1) 用户 :用户在操作软件的过程中涉及到的软件功能主要包括:用户注册功能、用户登录功能、重设用户密码功能、好友列表管理功能、聊天功能等,其中聊天功能包括聊天文字、聊天表情、语音聊天、以及图片文件发送等。(2)系统 :系统通过调用相关功能模块将自动登
17、录用户账号、保存用户注册时的设置信息;系统提供后台的软件更新功能。2.2.2 功能需求校园聊天软件的功能需求包括:用户注册、用户登录、聊天功能、通讯录管理、个人信息管理。(1) 用户注册用户初次进入软件,需要申请一个用户名。这就需要用户通过注册功能注册一个可以使用的账号。(2) 用户登录为了让软件使用起来更加简便,给用户带来良好的交互体验,系统一方面允许用户采用输入账号和密码的方式进行登录,另一方面也允许记录帐号信息而自动登录。(3) 聊天功能聊天功能是指好友之间的发送即时消息进行通讯,消息形式可以是文字、语音、表情符号、图片等等。(4) 通讯录管理 通讯录管理功能包括对好友的添加、删除、查找
18、,显示好友列表,置顶显示即时会话等。(5) 个人信息管理个人管理信息主要是对用户的头像、个性签名、昵称等进行管理。 图 2-1 系统功能模型图2.3.3 性能需求根据以上分析,性能需求主要针对用户使用软件的的方便性和系统可靠性等方面进行考虑。在项目设计中,主要遵循一下原则:(1) 可操作性:用户对于软件操作时,界面要简单、方便、直观。操作过程中要有及时的提示,比如错误提示。从而保证用户能正确操作软件。(2) 可移植性:设计出来的软件系统要保证在不同版本的 Android 手机上运行不会崩溃,同时保证数据的正确性。(3) 实用性:从用户的实际需求去考虑软件的功能需求。(4) 安全性:系统要保持数
19、据的正确性,在长时间的使用过程中保证系统不易崩溃。同时软件在运行和不运行时都要保护用户的注册信息和软件通过检测用户本地信息时所获得的信息都不被泄露,从而确保用户使用该软件的安全性。(5) 可靠性:系统要有一套良好的运行环境。确保系统稳定、长时间的运行不出错,从而使用户可以放心使用软件。(6) 可维护性:系统软件在开发过程中不但要保证用户需求的功能实现,还要考虑未来为应对用户需求而更新后续版本的功能需求,以及功能的扩张性,从而维护好软件的可持续性。2.3 本章小结本章主要阐述了项目方案和需求分析,其中项目方案包括开发的工具和搭建的环境介绍;需求分析包括主要参与者、功能需求和性能需求。主要参与者又
20、包括系统和用户;功能需求包括用户注册、用户登录、通讯录管理、聊天管理、个人信息管理。3 软件设计3.1 软件功能设计根据软件需求分析,该软件功能主要分为以下几个模块:用户注册模块、用户登录模块、好友管理模块、用户信息管理模块、聊天管理模块。以下是系统功能模块图,如图 3-1:图 3-1 系统功能模块图3.1.1 客户端功能设计 根据上述本软件需求分析,用户注册模块设计如下:(1) 用户运行软件后需要通过注册界面注册账号从而使用该软件,之后软件系统验证正确后将与服务器进行通信,将注册信息发送给服务器,服务器将发回允许指令。(2) 注册的用户名不允许重复,否则服务器将会报错。(3) 密码设置时,系
21、统要求输入两次密码,之后服务器将验证系统发过来的密码包信息。图 3-2 登录流程图根据上述本软件需求分析,用户打开软件后,用户将进入登录页面,此时只要输入已注册的用户名、用户密码就可以登录成功。用户登录模块设计如下:(1) 用户名错误:系统提示该用户名已存在或不存在即未注册。此外用户名必须多于六位数。否则系统也会提示错误。(2) 密码验证错误:登录界面中,当用户登录时填写的登录密码被系统提示错误的时,用户需要重新填写登录密码。(3) 其它错误:当用户进行一些不当操作也会引起错误。从而导致登录失败。(4) 自动登录功能:每个使用该软件的用户在第一次成功登录后,再次登录该软件时,系统都会自动选择自
22、动登录。因为系统会把用户之前的登录信息缓存到本地手机中,下次登录时软件系统 将自动检测缓存的信息,从而自动登录。图 3-3 用户登录流程图用户通过转入个人设置界面进行信息设置,用户管理设置模块设计:(1) 用户头像管理:用户可以设置自己的头像,上传方式可以通过本地相册和拍照两种方式上传头像,上传成功后系统将保存信息。(2) 用户昵称管理:用户可以设置自己喜欢的昵称,用设英文 16 个字符,用户设置完成昵称后,点击确认按钮,上传信息。(3) 用户心情短语设置:用户可以设置自己喜欢的心情短语,设置完成后,系统将保存信息。(4) 用户密码重置管理:当用户为了自己信息安全考虑时,可以进行密码的重置。密
23、码重置的时候,为了账号安全用户必须验证原来的密码。(5) 设置管理其他信息:用户可以对聊天中的消息提醒进行设置,可以调节音量大小,也可以设置为震动。同时该软件的系统音量也可以如此设置根据需求分析,好友管理模块设计如下:(1) 用户可以进行添加好友、删除好友、查找已经添加的好友的操作。(2) 用户也可以通过搜索功能键在相应的位置输入想要添加的用户名,从而添加好友。如果陌生人想添加你为好友,只要他进行之前的操作后你也会收到验证消息,这时你可以选择是否添加他为你的好友。根据软件需求分析,聊天功能管理模块设计如下:(1) 文字聊天: 用户在聊天过程中发送的纯文本消息将会被系统软件传输到服务器端,服务器
24、端将检查发送过来的信息包格式之类的正确性,通过验证后给软件发送反馈。软件收到回馈后,将给用户提示。(2) 语音消息 :好友之间可以发送语音消息。用户点击聊天界面下方的发送语音按钮不放后,软件将开始录音。(3) 图片文件 :好友之间可以发送图片文件。用户可以选择手机本地图片和拍照两种方式。消息发送流程图 3-4 如下 :图 3-4 消息发送流程图3.1.2 服务器功能设计 目前市场中小范围局部的聊天软件主要为:基于环信、融云等第三方 IM 服务器的通讯聊天软件或者是基于 XMPP 协议利用OpenFire 数据库的通讯聊天软件。此次本项目软件主要使用基于 XMPP 协议的 OpenFire 服务
25、器,XMPP 协议作为一个被广泛使用的消息协议,有大量的网络资料和成熟开源模块,例如在 Android 和 IOS 上,就很方便集成 XMPP 协议。 IM 作为一个复杂的系统,有方方面面需要考虑,使用成熟的协议,能帮助我们避免很多问题,提高开发效率。Openfire 采用 Java 开发,开源的实时协作(RTC)服务器基于 XMPP(Jabber)协议。Openfire 安装和使用都非常简单,并利用 Web 进行管理。单台服务器可支持上万并发用户。开发者可以使用它轻易的构建高效率的即时通信服务器。由于是采用开放的 XMPP 协议,您可以使用各种支持 XMPP 协议的 IM 客户端软件登陆服务
26、 OpenFire 作为服务器。允许多个客户端同时登录并且并发的连接到一个服务器上。服务器对每个客户端的连接进行认证,对认证通过的客户端创建会话,客户端与服务器端之间的通信就在该会话的上下文中进行。在 Oponfire 服务器中。针对每个用户的请求,创建一个线程来进行响应,同时采用线程池来创建和管理线程,提高了服务器的执行效率。线程池的大小可以根据服务器在运行的过程中接收到的用户请求的数量进行自动调整。openFire 服务器如图 3-5 所示,openFire 消息发送原理图如图 3-6 所示。图 3-5 openFire 服务器图 3-6 OpenFire 消息发送基本原理图3.2 软件的
27、数据库设计通过以上对客户端功能设计,要想实现不同客户端的用户通信,服务器端功能主要包括:对客户端发出的消息的侦听、存储、反馈。所以数据库设计方面也要满足这些要求。本项目软件服务器端主要采用 OpenFire 服务器的数据管理功能对数据进行管理,下面的数据库表列出了系统运行时需要涉及的数据信息,共 4 张表,分别是用户注册信息表、好友信息表、聊天信息会话表和通讯信息表。(1) 用户注册信息表,用于存放用户注册时录入的信息,如下表 3-4 所示。表 3-4 用户注册信息表字段名 类型 约束 键值 说明 User_id String 非空 主键 内部使用 id User_name String 非空
28、 注册后系统使用 id User_phone String 非空 用户手机号 password String 非空 用户密码 (2)好友信息表,用于存放联系人信息,如下表 3-5 所示。表 3-5 好友信息表字段名 类型 是否为空 键值 说明 T_id int 否 主键 自增长 id F_ower_id string 否 用户id F_contact_id string 否 好友注册号 F_status string 好友在线状态 F_nickname string 好友昵称 F_mood string 好友心情短语 F_phone string 好友 F_portait_uri string
29、 好友使用头像 (3)聊天会话信息表,主要存储用户和好友的会话信息,它的字段如表 3-6 所示:表 3-6 聊天会话消息表字段名 类型 约束 键值 说明 _id int 非空 主键 自增长 id Owner_id string 非空 拥有者id Data_id string 非空 数据 id Contact_id string 非空 好友 uid D_time string 会话创建时间 D_last_content string 会话最后内容 D_last_time time 会话最后时间 D_last_type int 会话最后消息类型 D-count int 会话消息数目 (4)通讯消息
30、表,存储的是用户与联系人通讯的消息,它的字段如表 3-7 所示:表 3-7 通讯消息表字段名 类型 是否为空 键值 说明 T_id int 否 主键 自增长 id L_owner_id String 否 用户 id L_data_id String 否 数据 id F_uid Stirng 否 联系人 id L_data_time time 消息时间 表 3-7(续)通讯消息表字段名 类型 是否为空 键值 说明 L_data_type int 消息类型 L_data_content Stirng 消息内容 L_data_uri String 图片 uri L_data_state int 语音
31、发送状态 L_data_audio_marked int 语音消息读取状态 3.3 本章小结本章主要根据需求分析对软件设计进行了如下设计:注册模块设计、登录模块设计、用户管理模块设计、个人信息管理设计、通讯录模块设计以及数据库的设计。4 软件实现4.1 服务器端4.1.1 配置 OpenFire 服务器在配置或二次开发 OpenFire 服务器之前,首先应该去官网下载 OpenFire 相关的构件和程序。当成功下载好 OpenFire 服务器后,我们首先将其解压,然后在 openfile/bin 目录下找到 OpenFire.exe,双击即可启动 OpenFire 服务器,如图 4-1 所示。
32、图 4-1 启动 OpenFire 服务器当成功启动 OpenFire 的服务器后,我们输入:127.0.0.1:9090 进入 OpenFire 服务器的管理页面。OpenFire 管理页面的端口为 9090,缺省账号和密码都是 admin。如果是第一次登录 OpenFire 服务器的管理页面,我们则需要配置一些初始信息,当成功配置好后,我们便可以完成登录。OpenFire 的管理页面包含 5 个菜单选项,分别是服务器基本信息配置选项、用户组管理选项、会话管理选项、分组聊天选项和插件选项。其中服务器基本信息配置选项主要包含了 OpenFire 的一些常规配置,比如端口的配置、系统属性设置、缓
33、存设置、数据库设置(OpenFire 提供了自带的嵌入式数据库)等等。而用户组管理选项可以用来管理注册用户。会话管理选项则用于管理客户端连接。分组聊天选项则用于管理会话组。而插件选项主要是用于添加开发人员对 OpenFire 服务器管理页面的功能扩充。 OpenFire 的管理界面如图 4-2 所示。图 4-2 OpenFire 的管理页面4.1.2 使用 Smack API 与 OpenFire 建立连接通信Spark 利用 Smack API 进行与 OpenFire 服务器通信的客户端程序。成功下载好 Spark后,首先需要进行安装,然后注册登录用户,最后便可完成登录,添加用户进行会话。建立通信代码如图 4-3图 4-3 Smack API 与 OpenFire 建立连接通信代码