1、 毕业论文(设计)题 目 基于android平台的聊天软件设计与实现 学 院 专 业 学生姓名 学 号 指导教师 word文档 可自由复制编辑基于android平台的聊天软件设计与实现通信工程专业学生 xxx 指导老师 陈理【摘要】聊天工具又称IM软件或者IM工具,主要提供基于互联网络的客户端进行实时语音、文字传输。这是一种可以让使用者在网络上建立某种私人聊天室的实时通讯服务,本课题主要研究基于Android的移动聊天系统,开发出界面简洁,用户易操作的即时通信聊天软件。主要功能:用户注册,登录,好友一对一聊天,群组聊天。在该即时通信工具中客户端之间通过服务器对数据的转发实现相互通信。本文首先概
2、述了IM聊天工具的背景,其次是课题的目的及意义,然后介绍了软件开发的环境和开发工具及其技术,给出了软件的系统架构,各个模块的流程图及用例,在Eclipse中使用Java语言实现了APP各个功能模块, 该APP的功能主要包括用户登录、注册、聊天框架、通讯录管理、个人信息管理等功能模块。【关键词】Android 通信 聊天软件 注册 登录 【Abstract】The main research topics of the graduation Android-based mobile chat system, according to its architecture and design pri
3、nciples developed interface is simple and easy to operate mobile instant messaging chat tools. The main function of the chat tool: user registration, login, friends one-on-one chat, group chat. Data transmission in the real-time communication tools Socket Programming. Communicate with each other on
4、the data forwarding between the client through the server.The paper first outlines the background of the IM chat tool, followed by the purpose and significance of the issues, and then describes the software development environment and the development of tools and technology, the software system arch
5、itecture, the flow chart of each module and use cases, and then detailed change instant messaging tool design and implementation, and finally a simple test system.【Keywords】Android; communication; chat software; sign; log in 目录第一章 绪论11.1聊天软件背景11.2 课题意义11.3 研究内容21.4 设计思想2第二章 Android聊天软件可行性分析32.1 Andr
6、oid 行业概述32.1.1 认识Android32.1.2 Android开发概述32.1.3 Android的Listview介绍32.2 软件开发的工具和环境42.2.1 编程语言42.2.2 技术路线42.2.3 用户要求52.2.4 运行环境52.3 基于数据库实现设计52.3.1常用的数据库软件52.3.2消息推送原理62.3.3数据库表62.3.4数据管理要求7第三章 基于Android平台的聊天系统设计83.1 聊天软件功能83.1.1 功能描述83.1.2 界面布局设计83.1.3 消息推送原理83.2系统架构图93.2.1 系统逻辑流程图93.3.2系统物理架构图93.3接
7、口设计103.3.1 用户接口103.3.2 外部接口103.3.3 内部接口11第四章 基于Android平台的聊天系统实现114.1 服务端模块114.1.1登录114.1.2注册114.1.3聊天124.1.4下线124.2 客户端模块134.2.1 注册/登录界面134.2.2 聊天界面154.2.3 好友信息界面164.2.4 设置界面174.2.5 聊天记录194.2.6 退出程序20第五章 基于Android平台的聊天系统系统测试21第六章 总结与展望21致谢23参考文献241.绪论由于现代技术的不断加深以及信息化的广泛普及,移动通信作为一种新兴技术,近年来得到了潜移默化的普及和
8、深入,移动网络上的各种应用层出不穷,给各年龄段、各行业阶层的用户提供了不同的个性化的服务。聊天软件要在瞬息万变的信息时代生存,适应激烈竞争的市场,必须提高市场竞争力,就要对市场作充分的调查和详细的研究,同时也要有好的客户服务。移动网络在线聊天系统对于人们来说就是一种交流和通信的平台,本系统做到了信息的及时的反馈,即时的处理并作出相应的行动。移动网络通信是网络应用的重要体现方面。移动网络即时通信则是网络应用的重要体现方面。本聊天系统主要适用于客户端与客户端通过服务器的信息传输。本聊天程序使跨距离的交流更加方便和快捷,更能高效率的体现现代即时通信的特点。1.1聊天软件背景我们进入了一个信息高速发展
9、的时代,人与人之间不再只依赖于面对面,或者依靠电话的联系,信息的快速传递不仅能够节省电话产生的费用,而且还有助于人们保持固定长远的联系。目前,我们常用的聊天软件有QQ,微信,微博等。在移动互联网时代,面对层出不穷的软件开发,我们需要基于移动终端开发出新型的聊天软件,来满足大众的需求,我们都熟悉且常用的移动设备终端操作系统有ios,android,symbian等等,最普及的是Android。本课题采用聊天软件的C/S架构:采用客户端/服务器形式,用户使用过程中需要下载安装客户端软件,典型的代表有:QQ、微信 、微博 、YY、MSN等1。1.2 课题意义在互联网飞速发展的今天,“网虫”在互联网上
10、聊天已经成为一种习惯,IM程序设计就是一个多点通信程序,C/S体系架构在软件开发中越来越流行,应用软件使用这种架构可以充分发挥数据库系统优势,速度更快,从用户体验的角度来更好的满足人们对聊天软件的需求,有一个前提,频宽充足,大部分IM服务事实上提供实时通讯的能力。实时传讯与电子邮件最大的不同在于不用等候,不需要每隔两分钟就按一次“传送与接收”2,只要两个人都同时在线,就能像多媒体电话一样,传送文字、档案、声音、影像给对方,只要有网络,无论对方隔得多远都没有距离3。本论文将对基于Android的聊天软件系统进行可行性分析、实现设计、界面设计、关键代码编写、应用功能优化、系统测试等工作,实现登录功
11、能、向XMPP服务器发送信息包功能、用户好友通讯录获取及相关管理功能、个人信息管理功能、好友文字和语音消息发送功能、图片文件、位置发送功能。因此本课题具有重要的实际意义和应用价值。1.3 研究内容 主要研究内容:基于Android平台的聊天系统主要研究内容是服务器怎么样对客户端信息的识别,传输,怎么去区分信息类型,实现用户方便快捷使用本操作系统以及Android页面布局的设计内容。第1章:主要陈述聊天软件的的背景和来源,以及所开发的软件实际意义和现实意义,介绍了Android聊天系统的工作原理,最后说明论文主要工作。第2章:系统相关技术可行性分析,主要介绍软件开发所使用的工具以及开发环境,包括
12、安卓的行业概述,操作系统的架构和应用程序的分析、常见的数据库以及数据管理要求。第3章:系统设计,对软件的功能进行概要分析,同时从系统逻辑和物理流程图来清晰的展现全局,系统所包含的模块各个功能进行详细的介绍。第4章:系统实现,从服务端和客户端两方面入手,主要对聊天、通讯录、设置的功能模块条目进行详尽的介绍,以及功能和软件实现的关键代码的呈现。第5章:系统测试,主要陈述系统的测试用例以及系统的完成情况。第6章:总结与展望。主要介绍了项目完成经验,存在的缺陷以及不足,以及对未来的展望。1.4 设计思想本设计通过配置Android SDK、Eclipse、ADT插件、java来搭建Android 的运
13、行环境,Android程序开发过程中可以使用SQLite数据库来实现程序的结构化数据存储,所有的功能都基于数据库实现,包括消息推送;通过不同的表关系来实现功能,设计实现的功能有用户登录、注册,用户与好友的一对一的聊天,添加,删除好友,加入黑名单的功能,在Android手客户端实现发送文字、图片、位置、语音的功能。系统包括手机客户端和服务端两部分,服务器端采用了Bmbo云端服务器,利用数据库保存用户注册的信息、通讯录、聊天记录、好友资料等等,客户端实现各功能的可操作界面,并实现通过服务端达到与好友实时通信的功能。2.基于Android平台的聊天系统可行性分析需求分析是软件分析中的一个重要步骤。它
14、的基本任务是要准确地分析出系统应用者的需要,以及系统目标必须具备哪些功能。这些功能必须准确地,完整地体现出用户的要求。2.1 Android概述2.1.1 认识Android行业Android一词的英文本义指机器人,它是Google公司于2007年11月宣布的基于Linux平台的开源手机操作系统,该平台由操作系统,中间件,用户界面和应用软件组成,为移动终端打造的真正开放和完整的移动软件平台4。目前主流的应用在手机操作系统还有IOS,BlackBerry,Symbian.这些操作系统都大同小异,用于移动智能终端设备。2.1.2 Android开发概述在Android平台上,开发者可以根据用户需求
15、开发出丰富多彩的应用。Android的应用程序使用Java语言开发的,加上Android平台提供了2D,3D的图形支持,数据库支持(SQLite),并且集成了浏览器5。基于Android的平台,我们可以开发出各式各样的应用,这些应用可以涉及视频,游戏,音乐,办公软件等等,在此开放的平台上,这一切都取决于用户的需求和开发者的发挥和创意。2.2 软件开发的工具和环境开发环境:Eclipse开发语言:Java手机运行平台:Android5.0以及上版本开发软件所需插件:JDK、SDK2.2.1 编程语言使用Java编程语言及数据库技术相结合,编写一个基于android端的移动聊天系统软件。Java可
16、运行于多个平台,它是面向对象的程序设计语言,由语法,文件格式,虚拟机,应用程序接口四方面组成,可用来开发可靠地,要求严格的应用程序。编程的时候大小写敏感,因此要注意,而对于类名来讲,类名的首字母应该是大写。源文件名必须与类名相同,Java编程语言的风格类似于C、C+语言,优势就是它是一个面向对象的编程语言,开发者不用为内存管理而担忧,在这个项目上,使用Java编程语言对于初学者来说是很好的选择。2.2.2 技术路线Eclipse 可作为Java集成开发环境是一个基于 Java 语言的扩展并且源代码开放开发平台。Eclipse的本身是一个框架平台和服务,支持众多插件组件构建使得这套工具具有灵活性
17、。尽管 Eclipse 是使用 Java 语言开发的,但是它的使用并不局限于 Java 语言;他支持诸如 C/C+、COBOL 和 Eiffel 等编程语言的插件都可用。Android SDK是以Java语言为基础,也是一种软件开发工具包。开发工程师来开发软件应用,通过SDK提供的一些工具将其打包为Android平台使用的apk文件,然后用内带的模拟器来模拟和测试应用软件在安卓平台上的运行情况和效果。Android SDK 指的是Android专属的软件开发工具包。 下载好Android SDK后,开始安装,Android SDK采用了Java语言,所以需要先安装JDK,在这里我安装的是JDK
18、1.7。直接下载JDK安装文件安装更为方便。 Android SDK不用安装,下载后,直接解压即可, 将下载后的SDK的压缩包解压到适当的位置,就这么简单;SDK安装OK。 使用Eclipse进行Android应用开发需要给Eclipse装ADT插件,这样Eclipse就可以和Android SDK进行连接,可以在Eclipse中启动Android模拟器进行程序调试等ADT插件安装这里不再赘述,也可以下载ADT的zip包安装 安装完插件后,需要做一些简单的配置: 1、在Eclipse中,选择Window- Preference; 2、从左侧的菜单中,选择Android项; 3、设置SDK Lo
19、cation,点Browse选择SDK的安装根目录.2.2.3 用户要求对用户没有特定的要求,有无计算机专业知识都可以使用本软件进行聊天,因此本系统会提供一个人性化,用户易操作的界面,能实现最基础的文字传输功能,还包括语音,图片,位置的传输功能。用户在客户端运行聊天软件时,通过判断内部控制模块是否存储了已经配置好的用户信息,若存在,则直接调用配置存储过的用户登录信息进行网络连接;若不存在,则系统判断进入向导模式,提供用户选择登录或是注册。若用户注册过账号,则可以直接到登录界面填写登录信息进行登录,如果用户没有账号,则选择注册,到注册界面进行注册;登录成功后,就会显示联系人列表,不成功时,可以点
20、击手动设置来配置一些登录信息和网络设置信息等6。2.2.4 运行环境服务器方面要求双核,CPU 频率大于2.0GHZ,内存大于1G,硬盘空间要求300G及以上,系统建议是Windows7。客户端必须是Android系统且版本要在5.0的手机,运行内存1G以上。2.3 基于数据库实现设计2.3.1常用的数据库软件SQL数据库:SQL是一种操作命令集专为数据库而建立的,相对来说功能齐全,这种数据库语言是一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义DB2数据库:IBM DB2是美国IBM公司开发的一套关系型数据库管理系统,主要应用于大型应用系统,具有较好的可伸缩性,可支持从
21、大型机到单用户环境,应用于所有常见的服务器操作系统平台下。 DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令8。本设计数据库采用SQLite数据库,SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。2.3.2消息推送原理所有的功能模板都基于数据库实现,包括消息推送,接下来我将介绍推送功能的实现原理。安卓消息推送主要有三种方式:使用SM
22、S服务,就是依靠服务器端发送短信广播,通过手机客户端监听短信的广播,通过系统对数据进行相应的处理,从而达到消息推送的方式。优势就是省电,省流量。使用轮询方式,客户端从网络中主动获取数据。但是有一个缺点就是耗电、耗流量。轮询方式方便于我们理解,实现也起来较为简单,若只是做个试用的版本的情况下建议使用。但若是作为会一直在运行的应用,用很多种方法去优化,还是会比较耗费流量的,是因为运行过程中会一直获取网络中的数据。使用长连接方式,普遍来讲,服务器端推送的数据的方式,一般都是用这种方式进行数据推送。优点是省流量、缺点是耗电。这里我们介绍一下工作原理,工作原理就是客户端与服务器端会建立一条长时间的数据流
23、连接,移动客户端设备从建立起长链接开始一直在等待服务器端传过来的数据。由于连接是持续不断的,过程中也没有数据流操作,所以这就是长链接方式的优势之处,可以相对节省流量。可是又因为客户端会一直保持数据在网络中的连接,所以长链接的推送方式,原理上来讲是比较耗费电量的。2.3.3数据库表用户的数据库表字段名数据类型说明允许为空备注idInt主键NUserNamevarchar用户名NPasswordvarchar密码NTelvarchar电话YSexvarchar性别YEmailvarchar邮箱Y 表2.1用户的数据库表聊天记录数据库表字段名数据类型说明允许为空备注dataidvarchar主键Nn
24、amevarchar好友账户名Nimgvarchar好友头像Ndatavarchar聊天记录Ytimedatatime最后聊天时间Y 表2.2聊天记录数据库表好友信息数据库表字段名称数据类型说明允许为空备注friendIDvarchar主键Nnamevarchar好友账户名Ndatavarchar聊天记录Ytimedatatime最后聊天时间Y 表2.3好友信息数据库表2.3.4数据管理要求用户账号信息:用户账号,由于是String类型,可以为中文。聊天记录信息:不能存在非法语言。用户名信息:不能超过20个字符。密码信息:不超过20个字符。3.基于Android平台的聊天系统设计3.1 聊天软
25、件功能3.1.1 功能描述四种类型的消息:文本、聊天表情、图片、语音、位置用户管理功能:注册、登录好友管理功能:添加好友、删除好友、获取好友列表、黑名单管理、聊天记录的本地化存储。3.1.2 界面布局设计界面布局是一个活动条目中对于用户界面的架构设计,它通过存储全部显示给用户的元素来定义界面布局结构。客户端的用户界面布局文件存放/res/layout 中, 用XML 格式的布局文件定义应用程序默认的布局,包括将显示在屏幕的元素和属性。可以通过编程修改客户端界面上对象的状态,这种布局设计是非常重要的,其中也包括了系统定义在XML文件中的元素。3.1.3 消息推送原理Java的Scoket网络编程
26、,Java服务端对Android端提交的数据进行处理然后发给客户端进行显示。多线程编程,每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行,使用过程中用户在客户端首先将信息发送到服务器,服务器识别并解析信息,然后将信息转发给相应的用户,使用线程可以把占据长时间的程序中的人物放到后台去处理,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度,程序的运行速度可能加快,用户界面更加吸引人9。网络编程,Android手机端将组装好的数据包通过无线网络发送到服务器,服务器读取并解析数据包,组装一个相应的回应数据库并返回
27、给Android端,以此达到通信的目的。3.2系统架构图3.2.1 系统逻辑流程图用Visio结合聊天软件所实现功能画出以下流程图:如图3-1 图3-13.3.2系统物理架构图系统设计的物理架构图如图3-2 图3-23.3接口设计3.3.1 用户接口本聊天软件是基于Android聊天系统的应用程序,属于在互联网基础上的聊天管理系统,用户只需要在客户端使用安卓智能手机打开应用软件和进行操作,通过系统对用户账号验证,就可以享受应用程序所拥有的功能。系统不需要额外的特殊命令和额外的客户端,通过客户端,输入正确地址就可以访问系统。3.3.2 外部接口服务器程序可使用oracle 提供的对SQL 的接口
28、,进行对数据库的所有访问。服务器程序上可使用oracle 的数据库对重要数据进行的备份,防止数据被破坏而无法恢复。在网络软件接口方面,使用socket传输用户信息。3.3.3 内部接口本系统的功能模块是采用java面向对象编程的逻辑思想,通过接口实现模块与模块之间调用,增大了系统的稳定性从而减轻功能模块之间的耦合性。模块间的数据传入是利用接口的调用,参数传递,接口返回值来达到传递数据的目的。模块内部是采用函数调用,参数传递,返回值来实现模块内部的数据传递。4.基于Android平台的聊天系统实现4.1 服务端模块本设计服务器端采用了Bmbo云端服务器。Bmob是一个开发云存储的移动应用软件,在
29、本设计中,Bmbo给聊天软件添加了一个方便安全管理的后台管理系统,适用于浏览终端保存客户端产生的信息。在这个平台上,注册一个帐号之后,可以申请创建一个或者多个数据库,获得对应的密钥,然后在后台下载我们所需要的对应版本的SDK程序包并嵌入到软件应用程序中,使用过程中可以对数据进行保存,修改等操作。这个云端服务器,对于本设计来说是很好的一个选择,初学者来说使用起来较为容易,也比较方便。数据输入的时候通过使用移动智能手机设备登录,主界面为好友聊天界面,点击好友与其进行聊天,系统会通过通信机制协议向服务端传输数据。数据输出的时候服务端会将解析后的数据输出到客户端,通过判断客户端输出数据类型,进行相应的
30、消息反馈。4.1.1登录客户端输入登录账号和密码,服务端接收到登录信息并检查其是否正确,并向客户端反馈登录信息,若是信息正确。服务端就发送一个反馈数据给该用户,并在此时给客户端建立一个长链接,用于进行通信的基本操作,并将该用户的状态发给各在线用户。同时在服务器端显示出来。4.1.2注册客户端申请注册账号,将用户账号,密码用一种普遍的加密手段打包,然后以通信协议的一种TCP方式发送到服务器上,接收服务器给定反馈的一个cookie(这个值一般是对应在服务器Session的一个验证码,里面可以包含失效时间)。此后每次用户提交信息的行为,都可以以这个cookie作为判断条件,保存该用户账号,同时将信息
31、返回给客户端。4.1.3聊天服务端创建一个ServerSocket对象,并让这个对象在端口监听,如果客户端没有发送数据,那么该线程就停滞不继续,接收到客户端发送的请求,然后识别转发给消息指定的用户。4.1.4下线服务端检查是否有连接,并断开与客户端的长链接,记录每一个用户的状态,当其他用户需要读取到改用户的状态,能准确读取到用户处于下线状态,将此用户下线消息发给各客户端,并改写用户在服务器端的状态10。 4.2 客户端模块登录功能:建立与服务器的连接并登录,能显示登录错误信息。界面显示:主界面为好友聊天界面,显示了已经参与会话的好友列表,子界面为好友资料以及删除,加入黑名单的好友界面。 聊天功
32、能:与好友聊天时显示在会话界面。只需要在输入框中输入文本信息点击发送就可以与好友通信,还包括位置,图片,语音的发送。聊天纪录:保存聊天纪录,也可以加载历史记录,当加载到第一次会话,提示“聊天记录已经加载完了哦!”。 信息提示:系统弹出信息提示到来信息,并播放音乐来提示。后台运行:当用户将客户端进行后台运行时,如果有消息传输过来,系统会直接通过广播的形势显示消息的来源以及内容。4.2.1 注册/登录界面登录功能:客户端通过账号与密码建立与服务器的连接,若账号与密码是正确的可以成功登陆,当然,该用户的账号与密码可以存入数据库中,退出登录之后再启动程序可以检测是否存在配置文件从而自动登录,若是没有账
33、号,则可以注册账号。用户在客户端点击应用程序图标后启动应用如图4-1:图4-1注册/登录界面关键代码:public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);/去掉状态栏setContentView(R.layout.main);util = new SharePrefer
34、enceUtil(this, Constants.SAVE_USER);if (util.getisFirst() createShut();/ 创建快捷方式moveSound();initView();4.2.2 聊天界面在客户端,通过创建Socket来实现和服务器的连接,通过一个按钮来实现客户端向服务器发送消息,在接通后 ,TextView显示来自服务器的消息。界面如图4-2:图4-2聊天界面关键代码:private void sendVoiceMessage(String local, int length) manager.sendVoiceMessage(targetUser, lo
35、cal, length, new UploadListener() Overridepublic void onStart(BmobMsg msg) / TODO Auto-generated method stubrefreshMessage(msg);Overridepublic void onSuccess() mAdapter.notifyDataSetChanged();Overridepublic void onFailure(int error, String arg1) / TODO Auto-generated method stubShowLog(上传语音-arg1: +
36、arg1);mAdapter.notifyDataSetChanged(););4.2.3 好友信息界面 显示的条目:好友头像、昵称、账号、性别,两个按钮-发起会话、黑名单,如果加入了黑名单,就不能聊天,通过一个布尔值判断,单独一张表存放黑名单。布尔值是“真”True 或“假”False 中的一个。动作脚本也会在适当时将值 True 和 False 转换为 1 和 0。布尔值经常与动作脚本语句中通过比较控制脚本流的逻辑运算符一起使用。界面如图4-3:图4-3好友信息界面 关键代码:private void showBlackDialog(final String username) Dialo
37、gTips dialog = new DialogTips(this, 加入黑名单, 加入黑名单,你将不再收到对方的消息,确定要继续吗?, 确定, true, true);dialog.SetOnSuccessListener(new DialogInterface.OnClickListener() public void onClick(DialogInterface dialogInterface, int userId) / 添加到黑名单列表userManager.addBlack(username, new UpdateListener() Overridepublic void o
38、nSuccess() / TODO Auto-generated method stubShowToast(黑名单添加成功!);btn_back.setVisibility(View.GONE);layout_black_tips.setVisibility(View.VISIBLE);/ 重新设置下内存中保存的好友列表CustomApplcation.getInstance().setContactList(CollectionUtils.list2map(BmobDB.create(SetMyInfoActivity.this).getContactList();Overridepubli
39、c void onFailure(int arg0, String arg1) / TODO Auto-generated method stubShowToast(黑名单添加失败: + arg1););); 4.2.4 设置界面本界面的条目有:接收或者屏蔽消息,开启声音,开启震动,退出登录。界面如图4-4:图4-4设置界面关键代码:public void onCreate(Bundle savedInstanceState) / TODO Auto-generated method stubsuper.onCreate(savedInstanceState);mSharedUtil = mA
40、pplication.getSpUtil();Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) / TODO Auto-generated method stubreturn inflater.inflate(R.layout.fragment_set, container, false);Overridepublic void onActivityCreated(Bundle savedInstanceState) / TODO Au
41、to-generated method stubsuper.onActivityCreated(savedInstanceState);initView();initData();4.2.5 聊天记录当用户与好友进行聊天后。系统会自动将该好友加入最近聊天分组里面。且聊天记录也会保存进相应的最近聊天界面内,聊天记录是存在本地存储里。如图4-5:图4-5聊天记录关键代码:public void onRefresh() / TODO Auto-generated method stubhandler.postDelayed(new Runnable() Overridepublic void run
42、() / TODO Auto-generated method stubMsgPagerNum+;int total = BmobDB.create(ChatActivity.this).queryChatTotalCount(targetId);BmobLog.i(记录总数: + total);int currents = mAdapter.getCount();if (total = currents) ShowToast(聊天记录加载完了哦!); else List msgList = initMsgData();mAdapter.setList(msgList);mListView.s
43、etSelection(mAdapter.getCount() - currents - 1);mListView.stopRefresh();, 1000);4.2.6 退出程序再按一次返回键退出程序功能,在Application类(android的application类)中,写一个布尔值默认为false,然后在Activity中重写onKeyDown()方法,监听如果用户第一次点击返回键,使用Handler发消息,通知修改布尔值为true;然后使用countDownTime()进行倒计时,如果在两秒内用户再次按下返回键,则所有Activity执行finish()方法(退出程序)。如图4-
44、6:图4-6退出程序5.基于Android平台的聊天系统系统测试系统测试是应用软件最后的一个过程。应用程序运行时需要多次的测试来发现程序中存在的BUG,从而不断的完善系统,服务更加人性化。经过对系统对服务端和客户端的测试,首先服务器端软件测试,测试服务器端服务是否能开启,服务器端是否能对客户端传来的数据进行正确的解析,客户端应用程序进行测试,移动智能终端设备界面是否能正确显示,数据是否能准确收发,相应客户端功能是否存在不足,最后结合客户端与服务端一起测试,测试客户端是否能与服务端连接,登录,注册,聊天等功能是否正常实现。 系统测试ID测试项目测试数据设计预期结果结论1用户登录正确的用户名、密码正确进入主界面完成测试2用户登录错误的用户名、密码无法进入主界面完成测试3用户注册正确数据注册成功完成测试4用户注册非法数据注册失败