收藏 分销(赏)

基于andriod的语音即时通讯软件设计与实现.doc

上传人:a199****6536 文档编号:2482033 上传时间:2024-05-30 格式:DOC 页数:39 大小:863KB
下载 相关 举报
基于andriod的语音即时通讯软件设计与实现.doc_第1页
第1页 / 共39页
基于andriod的语音即时通讯软件设计与实现.doc_第2页
第2页 / 共39页
基于andriod的语音即时通讯软件设计与实现.doc_第3页
第3页 / 共39页
基于andriod的语音即时通讯软件设计与实现.doc_第4页
第4页 / 共39页
基于andriod的语音即时通讯软件设计与实现.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、摘 要 即时通讯是一种基于互联网的即时交流消息的业务,其利用互联网线路,通过文字、语音、视频、文件的信息进行交流与互动,有效的节省了沟通双方的时间与经济成本,自其诞生之日起就获得用户的青睐。传统的即时通讯应用大多基于PC端实现,随着无线技术(3G网络的普及)和以iphone、android为代表的智能手机的流行,越来越多的用户更青睐在移动终端上使用即时通讯业务,尤其是语音IM业务。本文分析了当前即时通讯的发展前景及其主流技术研究状况,并设计实现了一款基于android平台的语音即时通讯软件。本文采用软件工程的管理方法和思想,对项目进行了严格的需求分析及各种用例分析,并提出了合适系统构架(包括服

2、务器和客户端),采用瀑布模型的思想逐步实现软件的各种功能。本系统涉及客户端和服务器两个部分,但出于时间方面的考虑,仅实现了客户端的相关功能,服务器的搭建实现不在本论文的研究范围之内。客户端的设计与实现主要分为客户端界面、网络连接模块及语音控制处理模块三大部分进行分析介绍。其中涉及到的主要技术包括XMPP协议、Android语音录制播放、Speex语音压缩及Android NDK开发的相关知识。本系统基本完成了预期的各种功能,用户可以进行通畅的语音对话,语音质量满意,此外对语音的压缩也达到了预期的要求。整个界面的设计也很人性化,达到了很好的用户体验度。关键词:Android;即时通讯;Speex

3、压缩;语音聊天;XMPP协议AbstractInstant Messaging is kind of Internet-based Instant chatting business, which make use of text,voice,vedio and file to comunicate with each other via Internet. This kind of Service is greatly cost-effective to both chatters and from the day it was born, it has become popular. Tr

4、aditional instant messaging applications are mostly based on the PC side. Along with the development of wireless technology (especially the popularity of 3G network) and the popularity of smart phones such as iphone, and android, more and more users prefer to use instant messaging services on mobile

5、 terminals , especially the voice IM services. This paper analyzes the current prospects for the development of instant messaging and mainstream technology, and designed and implemented a voice instant messaging software based on the android platform.I take advantage of software engineering methods

6、and thoughts, conducted a rigorous needs analysis and a variety of use case analysis, designed the entire architecture of the system (both server and client), tand make use of waterfall model to develop this software. This system involves two parts : the client and server, but for the time considera

7、tions, the design and employ of server is not included in this paper. Design and Implementation of the client is divided into the client interface, network connectivity modules, and voice control processing module three parts to be introduced. Involved techniques includes the XMPP protocol, the Andr

8、oid voice record and play,Speex and Android NDK knowledge. The system basically completed the excepted functions, the user can clearly make voice chatting, the voice quality is also satisfied, In addition ,The design of UI is also very human, and have a good user experience. Key words: Android;IM;Sp

9、eex;Voice Chat;XMPP目 录摘要IAbstractII第1章 绪论11.1 课题研究的背景与意义11.2 Android平台发展概况21.2.1 Android系统构架21.2.2 Android组件31.3 XMPP协议31.3.1 XMPP协议简介41.3.2 XMPP会话模型41.4 语音即时通讯系统的应用前景及发展趋势41.5 本文的主要研究内容5第2章 系统可行性分析62.1 系统调查描述62.2 可行性分析6第3章 系统的需求分析83.1 系统功能用例分析83.2 系统非功能性分析93.2.1 系统界面设计及整体风格93.2.2 系统可扩展性及安全性93.2.3 错

10、误日志和系统国际化10第4章 系统的总体设计114.1 系统总体结构设计114.1.1 系统总体结构114.1.2 客户端设计124.1.3 服务器端设计144.2 数据库设计144.2.1 系统配置信息数据设计144.2.2 SQLite数据库设计154.2.3 安全性164.3 网络层整体构架164.4 XMPP协议174.5 HTTP传输模块184.5.1 HTTP传输模块设计184.5.2 HTTP传输模块实现184.5 消息发送接收模块20 4.5.1 消息发送20 4.5.2 消息接收204.6 XML数据解析20 4.6.1 XML数据解析常用方法20 4.6.2 DOM结点简介

11、21 4.6.3 使用DOM进行xml解析21第5章 系统详细设计与实施225.1 语音录制播放模块设计实现22 5.1.1 android音频系统22 5.1.2 语音录制与播放实现235.2 客户端模块设计与实现23 5.2.1 UI界面设计23 5.2.2 UI界面优化24 5.2.3 通讯模型设计25 5.2.4 语音模块设计25 5.2.5 通知系统设计及其实现265.3 Speex语音处理实现275.4 外部库链接实现28 5.4.1 NDK 简述29 5.4.2 NDK编程实现29 5.4.3 外部库链接编码实现305.5 语音模块测试305.6 语音压缩效果比较31结论33参考

12、文献34致谢3535第1章 绪 论1.1 课题研究的背景与意义近几年,随着iphone以及android phone等智能手机的流行普及,移动互联网发生了爆炸性的增长。据尼尔森相关数据统计,目前移动互联网流量占总流量的比例已有由4年前不到0.2%到目前的10%还要多,并且每年正以百分之几百的增长速度高速发展。在传统互联网发展臻于成熟以后,移动互联网所蕴含的巨大潜力与商机正吸引着无数的创业者并引爆了又一轮的投资潮。2010年10月,一款名为Kik的语音即时通讯软件登在上线的15日内,就吸引了百万的使用者,一举获得了巨大成功。这款软件的成功也让国内许多企图复制企鹅帝国移动终端的人看到了希望。一时之

13、间,模仿者众多米聊、口信、微信以及盛大的KIKI。甚至作为通道的电信运营商自身都加入到这场混战当中。就在刚刚结束的2012MWC巴塞罗那大会上,欧洲的五大电信巨头联合推出了名为“Joyn”的即时手机短信系统。而早在几个月前,中国电信巨头中移动、联通及电信就已经推出了各自的语音IM飞聊、沃友和翼聊。移动互联网的迅速发展给运营商带来巨大机遇的同时,语音类的即时通讯产品却对运营商构成了潜在威胁,做与不做,对运营商而言都是一个尴尬的局面。从Ovum的最新预测报告来看,越来越多的消费者使用基于IP的通信服务,这一现状使电信运营商受到巨大损失。随着基于IP的通信应用程序继续发展,短信收入的损失将会继续加剧

14、。在社交网站Facebook大行其道的当下,社交成为互联网的又一大特性,而这种又特别适合在移动终端使用,或者说,社交自其诞生之日便拥有了移动互联网的基因。智能手机较小的体积(便携性)及强大的信息处理能力在很好的满足了消费者的同时,却又留给了人们一个较大的难题:输入问题较小的屏幕限制了人们手指的灵活性。此时人们或许想到,语音便是解决此类问题的最好方法如果智能手机能够很好的解析我们的语言的话。不过本文并不是探讨如何开发出另一个Siri的。我们要做的事情仅仅就是将你的声音传递给另一个人,你们将在手机上进行间断性的“对话”。我们会发现,这甚至比我们在PC上即时聊天更加方便,因为我们脱离了键盘的束缚;同

15、时,由于我们仅需支付并不昂贵且正在不断下调的流量费,我们比语音通话更加省钱。由于此类产品是跨平台的,所以你可以给任何一个好友发消息,而不管他是哪家运营商(集语音、文本、图片于一体,此时我们不难理解这为什么叫“短信(彩信)杀手”了。虽然这类解决方案看上去并不复杂,但在智能终端即时通讯领域,此种类型的通讯方式正在产生革命性的效果我们再也不需要手动去编织一条条文字的短信,而是将我们的声音活灵活现的展示在朋友的面前。这是科技领域的一小步,但对万千大众的生活而言,这将是一大步,因为这将从根本上改变我们的即时通讯方式和习惯。1.2 Android平台发展概况1.2.1 Android系统构架和其它操作系统

16、一样,Android1的系统架构采用了分层的架构。android分为四个层,从高到低分别是应用程序、应用程序框架、系统运行库和linux核心层。其构架图如图1-1所示:图1-1 Android构架图(1)应用程序:Android 同一系列核心应用程序包一起发布,该应用程序包包括 email客户端,短消息程序,联系人管理程序等。全部的应用程序都使用JAVA 设计语言编写。 (2)应用程序框架:开发人员也可访问核心应用程序使用的API框架。这一应用程序的架构设计可以简化组件的重用,任何应用程序都可以使用其他应用程序所发布的功能块。同时,该应用程序的重用机制也使用户可快捷的调用及更替组件。 每个应用

17、后面都隐藏着很多的服务和系统,包括: 本系统的视图有很好的扩展性,能够用来架构相应程序,它包括lists、grids、text boxes,以及可嵌入的web 浏览器。 内容供应设置使得应用程序可以访问其他应用程序的所有数据,如好友信息库。 或者共享该应用程序的数据。 非代码资源的访问需要特殊管理器的支持,如布局文件等。通知管理器使得应用程序在可以在消息提示栏显示其自主设置的提示信息。 活动管理器用来管理应用程序生命周期并提供常用的导航回退功能。 (3)程序库:安卓包含一些C/C+库,这些库能被 安卓 系统中不同的组件所使用。它们通过应用程序框架为开发者提供开放性服务。 (4)Android

18、运行库:Android 含有核心库,JAVA 编程语言核心库的大部分功能都由这个核心库提供。各个安卓应用程序在其各自的进程中运行,且各自拥有一个独立的虚拟机实例-Dalvik。 (5)Linux 内核:Linux 2.6 内核是Android 所依赖的核心系统服务。同时,软硬件之间的抽象层也由Linux 内核充当。1.2.2 Android组件Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)以及Content Provider(内容提供商)分别是安卓软件开发的四大组件。其中Activity用来表现系统总体功能,Service为后台正常运行提供服

19、务,但是它不能呈现系统的界面,BroadcastReceiver可以接收广播,Content Provider的功能类似于数据库,能够存储和读取数据。应用程序构建模块如下表:表1-1 应用程序构建模块活动用户界面部件通常对应一个屏幕意向转移设置并回应提示或改变状态并激活应用程序服务没有前端界面的后台任务内容提供应用程序可以共享的数据1.3 XMPP协议1.3.1 XMPP协议简介XMPP是一种分散式的网络协议,它是一种基于服务器的互联网标准。XMPP采用C/S结构,主要用于通过GPRS连接的即时信息。客户端,服务器端和协议网关是XMPP的三大重要组成部分。1.3.2 XMPP会话模型XMPP实

20、体之间相互传送数据使用XML流。当XMPP的客户端连接到服务器时,这个XMPP的客户端会和服务器端都会发起XML流,连接到对方,以实现信息交流的目的。XMPP是基于异步的会话模式,在通信过程中,发送者可以不等接收者回复而继续执行,接收者无需对发来的消息立即进行处理,而是可以自行选择合适的时间处理此消息。这使得基于XMPP的会话更加方便。1.4 语音即时通讯系统的应用前景及发展趋势以语音聊天为特色即时通讯软件在传统的PC端已经成为即时通讯的一个重要应用,但随着无线技术的发展,特别是3G网络的普及,特别是以IPhone、Android为代表的智能手机以其智能、便携等特性,迅速成为人们的新宠。在移动

21、智能终端大行其道的背景下,PC端语音即时聊天功能受到极大限制,其弊端日益显现。与此同时,基于移动智能终端的语音即时通讯类软件却迅速蹿红,以此类应用软件的鼻祖KIK为例,在其上线的15天内便吸引了超过100万的用户。更是由于,基于移动网络智能终端的该类软件,很有可能给运营商带来丰厚利润的短信和彩信业务造成致命威胁,语音即时通讯软件甚至被冠以“短信杀手”的称号。在这之后,移动互联巨头,甚至网络运营商都纷纷推出类似的产品,其背后巨大的商业潜力可见一斑。在社交文化越来越浓厚的当下,单纯以语音通话为特色的该类软件已经很难打动消费者,越来越多的语音即时通讯软件加入了更多的社交元素:状态更新、图片应用、以及

22、基于LBS的地理位置服务甚至电子商务等信息的融合以满足日益庞大的用户。总而言之,将来语音类即时通讯软件将以语音通讯为主打特色,同时将更多的融合轻量级的社交元素、社会化媒体元素、电子商务、LBS服务等,并呈现出易用性、社交化、多极发展等特点。毋庸置疑,语音即时通讯软件已经逐步成为移动智能终端一大不可替代的应用并在将来会取得更大发展,成为杀手级应用之一。1.5 本文的主要研究内容 本文在内容安排上采取先介绍系统构架设计然后再分别介绍每一个部分的方法来组织安排,并在每一个部分穿插介绍其中所需用到的关键技术及其实现。由于本系统涉及服务器和客户端两个方面(其中服务器的部署实现不在本文的研究范围之内),本

23、论文为突出重点,在章节安排上如下:第一章介绍了论文撰写的背景、目的和意义及其所用到的基础性知识。第二章介绍了系统的可行性分析,确定系统后续的开发任务能否完成。第三章提出了整个系统的需求分析,重点分析了系统的功能性需求和非功能性需求,以突出进行本系统开发的重点内容。第四章介绍了系统的整体设计。重点讲解了SQLite数据库设计,提出了客户端网络层的设计,并重点介绍了XMPP协议,设计会话模型并给出了相关实现。第五章介绍了系统的详细设计与具体实施,主要介绍了系统的UI界面设计和语音的录制、播放以及压缩技术,在过程中,由于需要使用C进行实现,顺便介绍了基于Android NDK编程的相关知识。以上就是

24、本论文的组织结构,本论文基于软件工程的管理思想进行设计实现。重点对关键模块和关键技术进行介绍并给出了相关实现方法步骤。第2章 系统可行性分析如何在最短时间内用最小代价解决问题,是可行性研究的根本目的。这就要求我们需要对现有的系统进行全面的了解和分析,确定系统后续的开发任务能否完成,以避免时间、资源、人力的浪费。2.1 系统调查描述(1)调查发现,随着无线技术(3G网络的普及)和智能手机的流行,越来越多的用户更青睐在移动终端上使用即时通讯业务,尤其是语音IM业务。本软件就是一款基于android的集文本、语音、图片于一体的即时通讯软件。它可以在拥有无线网络访问的前提下,使用户与好友之间可以进行方

25、便即时的聊天沟通,可以有效实现快捷方便低成本的沟通。(2)本系统在实现基本的功能基础上,将留出一些其他功能的接口,以便今后可继续升级完善。2.2 可行性分析本节从以下三个方面对系统进行了可行性分析,具体内容如下:(1)在经济方面的可行性分析,首要是分析成本大小,估算系统的开发费用和今后的运行、维护费用,同时估算可获得利益和系统成本的比值以及需要达到的社会效益等问题。由于本系统的特殊性,所以应着重分析其社会效益。对于本系统来说,随着智能手机的发展以即时代对信息传递的迅速便捷要求,即时通讯软件将会有很大的发展前景。(2)在技术方面的可行性分析,主要是依据对智能手机即时通讯系统使用者的调研中所提出的

26、环境约束条件,来研究系统运行的可行性。根据系统的功能来判断开发所需的技术是否具备,一般需要从多个方面去考虑和分析,如系统正常运行的软硬件条件、工作人员的开发水平和外部环境等方面。目前,国内对基于安卓系统的即时通讯软件的开发已经日臻成熟,对本系统的开发能够起到一个很好的导向作用。风险分析:主要分析在给定的制约条件和限定的期限内,是否能够设计出满足需求的系统,并实现必要的系统功能。资源分析:主要分析系统开发的外部资源,如开发工作人员数量是否合适,是否存在问题、系统开发的软硬件条件以及其他系统建立需要用到的资源。 技术分析:主要分析系统开发所需的相关技术的发展现状是否支持该系统运行,以及应采用什么语

27、言和框架来对系统进行设计等。(3)可行性分析在法律方面主要是研究系统的开发及实现是否合法、开发过程中签订的一些合同是否涉及到法律责任以及系统是否存在其他与法律相抵触的地方等。在考虑多种系统实现方案后,应选择最优秀、最适合的方案进行开发。本章主要对于系统的可行性研究进行了简要的分析,通过以上对本系统经济上、技术上、运行上、法律上的可行性,以及对于系统的主客观条件可行性的分析,认为该系统可以执行。第3章 系统的需求分析3.1 系统功能用例分析针对用户的需求分析,设计系统主要功能如下:(1)用户注册:新用户需要注册后方能使用。注册使用电子邮箱和密码。(2)用户登录:用户需输入相应用户名、密码来登录系

28、统。(3)系统设置:用户可对系统一些基本选项进行设置,如提醒铃声、震动等。(4)查找、搜寻好友:用户可根据关键字搜索好友。 (5)添加好友:用户可添加陌生好友。 (6)向好友发送信息:用户可向好友发送信息,其中包括文本、语音及图片信息。离线信息寄存于服务器,用户登录后可接收。(7)接受好友信息:用户可接收好友发送的信息,包括文本、语音及图片,离线信息寄存于服务器。当用户登录后可接收。(8)查看历史记录:用户可以查看历史聊天记录。(9)注销退出:用户注销后,下次使用该软件时需要重新登录;退出后,下次登陆无需再次输入账号和密码。 下图为系统的功能用例图2:图3-1 系统功能用例图3.2 系统非功能

29、性分析3.2.1 系统界面设计及整体风格 在系统整体风格及几面设计方面应尽量做到界面简洁明了、功能清晰实用、用户易学易用。主要表现在以下几个方面:(1)系统界面整体上风格协调,给用户提供良好体验。(2)在保证网络访问畅通的条件下,提高网络响应速度,尽量防止出现假死情况。(3)注重突出功能,尽量使用户易懂易用。(4)错误提醒,在数据访问出错的情况下,应给出相应的提示。3.2.2 系统可扩展性及安全性系统要有很好的扩展性,以方便以后程序的维护和升级。系统尽量采用弹性构架设计,通过代码复用及继承来增加程序的健壮性及可扩展性。在安全性方面,要注重对用户隐私的保护。用户密码等敏感信息不要使用明文进行传送

30、,要进行相关的加密封装后再行传送。对于数据库操作,如果发生事务故障,进行数据回滚以保证数据完整性。3.2.3 错误日志和系统国际化系统应该提供易于查检阅的日志,为日后程序的升级。维护以及检修提供方便。系统的错误日志的保存需要致力于日志时间,错误原因以及解决办法方面。同时,由全球Android 用户都能够自由下载手机软件,所以,应当完成相应的国际化的工作,使其能够支持英语等主流外语。第4章 系统的总体设计4.1 系统总体结构设计4.1.1 系统总体结构与其他一些即时聊天软件不同,本系统采用客户端服务器端的系统构架而非客户端客户端的系统构架,所以两个客户端之间所有的交流都必须通过服务器。在通讯过程

31、中,采用XMPP协议,它是目前一种比较成熟的IM通讯协议,它可以实现Android IM客户端与PC Jabber客户端进行通信。系统总体系统构架3如图所示:图4-1 系统总体构架图如上图所示,整个构架以服务器为中心,服务器连接着众多的移动客户端(Android IM)与PC Jabber 客户端以及数据库服务器。服务器在此中间扮演了一个十分重要的角色,它要实现用户注册、会话管理、用户与服务器端通信、服务器之间信息交互、用户信息存储、身份权限验证、离线信息存储及用户是否在线查询等等任务。不过服务器端的实现部署并不在本论文的研究范围之内。我们只需要根据服务器端提供的相关接口来进行通信即可。客户端

32、主要实现用户与系统的交互以及与服务器端进行通信,主要是为数据提供进行接收。发送、包装、解析等服务。系统的功能模块结构图如图4-2所示:图4-2 系统功能模块结构图由以上的功能结构模块图可知,本系统主要实现了发送图片、文本消息、语音、表情,搜索好友,好友列表,LED灯选择,声音提示,振动提示,铃声选择等模块。4.1.2 客户端设计4.1.2.1 客户端构架本客户端系统采用通过HTTP协议的方式与服务器进行交互。其中HTTP传输模块主要负责HTTP协议中转,提供数据传输工作,XML解析模块负责解析协议字流。MVC模式多被软件程序内部结构所采用,而SQLite数据库则被用来保存系统中的重要数据。其构

33、架设计图如图4-3所示:图4-3 客户端整体构架 如图4-3所示,在Android平台的客户端中Http传输模块负责网络通信层的服务器与客户端之间的连接。数据解析模块负责协议的解析操作,将从服务器端解析的协议转换为对应的模型对象,控制器、VO以及Android组件三项都由控制器进行统一的调动。作为一种嵌入式数据库,SQLite主要用于保存用户账户的的相关信息。4.1.2.2 客户端结构模型设计 MVC4模式是上世纪八十年代发明的一种设计模式,这种模式主要在交互式系统设计中所使用。本系统采用MVC模式进行构建。MVC在应用中被分为Model(模型)、View(视图)和Controller(控制器

34、)。Model负责业务数据和信息处理模块,主要实现封装数据的功能。View主要负责与用户进行交互,具体就是向用户展示模型的状态及控制信息,并根据用户的输入做出反馈。Controller作为逻辑模块,主要负责信息流的控制,完成具体的业务逻辑功能。它是双向的,即控制器既要将View上的操作数据反馈到Model上,以完成逻辑操作,又要讲Model上的数据映射到view上来完成与用户的交互。MVC模式分离了业务层和视图层,这为Andriod软件系统设计带来了很多好处。首先,程序工作者可以只改变View层代码却不需要改写Model和Controller层的代码。其次,业务流程和规则的改变仅需要改变Con

35、troller层代码就可以了。低耦合性以及高度的重用性保证了程序的健壮性和扩展性。业务层和视图层的隔离,使得程序更容易维护和修改,降低了运维的难度。4.1.3 服务器端设计XMPP开源社区为了解、使用XMPP协议提供了一个交流的渠道。这个交流平台使用XMPP路由器作为内核,以完成数据包在各个基本组件间的交换。其主要功能为: (1)会话管理器:负责客户端会话认证,在线状态,用户联系表等 (2)数据存储器(XDB)连接数据库系统,保持用户信息、通信日志等 (3)连接器管理器:管理与客户端之间的连接 (4)服务器连接器:管理XMPP服务器之间的连接 (5)传输器:建立XMPP服务器与非XMPP服务器

36、通信 (6)DNS工具:负责域名的解析,查找相应的XMPP服务。 (7)日志信息管理器:对所有的会话消息进行跟踪,同时服务器端出错时也会记录相应的信息。 XMPP社区提供了众多的XMPP兼容服务器供用户使用, 此处仅仅介绍服务器的设计,其具体实现不在本论文研究范围之内。4.2 数据库设计Android的数据存储方式是多种多样的,如Files、SQLite以及Network等。其中Shared Preferences和SQLite是Android中最常用的数据存储方式。4.2.1 系统配置信息数据设计Shared Preferences是一种类似于ini文件的格式存储数据,主要用于保存系统的配置

37、信息。由于采了Activity栈形式,使得系统总体资源不充分时,只能回收某些界面,因此有些操作需要在不活动时保留下来,以便下次激活时使用。这时候,Shared Preferences就成为了最方便快捷的存储方式。本程序中设置了对响铃、震动和LED灯闪烁的提醒设置,便使用Shared preferences进行数据存储,下次启动时仍将在此处保留上次设置的效果。除此以外,由于系统会自动记住用户的用户名和密码,在用户没有采取注销退出的情况下,下次登录时系统将会检查该状态根据情况将自动登录。此时状态的判断也将采用此存储方式。4.2.2 SQLite数据库设计SQLite是一种轻量级数据库,功能强大使用

38、起来方便快捷,现在已被广泛采用于Andrid软件系统的开发。根据本应用的特点,本程序所需用的数据库有:用户账户数据库、图片数据库、聊天历史记录数据库。其表的创建如下: 用户账户数据库:存储用户的个人数据。db.execSQL(CREATE TABLE + TABLE_ACCOUNT + ( + Account._ID + INTEGER PRIMARY KEY, + Account.UID + INTEGET, + Account.ACCOUNT + TEXT UNIQUE ON CONFLICT REPLACE,+Account.PWD + TEXT, + Account.NAME + TE

39、XT, +Account.HEAD_PHOTO + BLOB, +Account.DEFAULT + INTEGER, +Account.LAST_LOGIN + INTEGER, +Account.FRIEND_COUNT + INTEGER +);); 图片数据库用:存储图片信息。db.execSQL(CREATE TABLE + TABLE_PIC + ( + Pic._ID + INTEGER PRIMARY KEY, + Pic.URL + TEXT UNIQUE ON CONFLICT REPLACE, + Pic._DATA + TEXT, + Pic.SIZE + INTEGE

40、R +);); 聊天历史记录数据库:存储聊天历史记录。db.execSQL(CREATE TABLE + TABLE_CHATS+ ( + ChatHistory._ID + INTEGER PRIMARY KEY, + ChatHistory.UID + INTEGER, + ChatHistory.TO_CHAT_UID + INTEGER, + ChatHistory.CHAT_MESSAGE + TEXT,+ChatHistory.COME_FROM+ INTEGER,+ChatHistory.TO_CHAT_NAME+ TEXT,+ChatHistory.CHAT_TIME + LO

41、NG,+ChatHistory.MESSAGE_TYPE + INTEGER,+ChatHistory.SEND_SUCCESS + INTEGER,+ChatHistory.URL + TEXT,+ChatHistory.VOICE_TIME + INTEGER, +ChatHistory.SERVER_TIME + LONG +););SQLite数据库遵行SQL语言的语法规则,能够使用execSQL()来执行大部分的SQL语句。4.2.3 安全性SQLite数据库能够独立处理事务,这是因为它在数据库级上具有很强的独占性。这意味着多个线程可以同一时间内从统一数据库读取,但只有一个可以写入。

42、在某个进程或线程进行数据库写前,必须获得独占锁。在数据库进行读写时,必须注意,不能同时有两个线程同时进行数据库的写入操作,否则将可能造成数据锁死等问题,是数据库不能继续进行其它操作。4.3 网络层整体构架系统网络会话采用XMPP协议,底层使用HTTP进行数据传输。根据即时消息发送的顺序,其流程为:发送模块将将要发送的消息(文本、语音等)准备好,然后经过数据封装(XMPP数据封装),然后经HTTP传输与服务器进行交互。服务器对数据进行解析,找出消息将要发送的地址,服务器检查收信人是否在线,如果在线将消息传递给收信人。然后收信人经HTTP将消息接收到手机,经数据解析,接收模块将得到的消息进行处理,

43、包括:错误检查、数据提取、转由界面进行显示。如果为语音消息则下载语音文件保存到SD卡上。网络传输模型如图4-4所示: 图4-4 网络层传输模型图 根据上图,网络层可划分为接收发送模块、数据包装解析模块和HTTP运输模块。4.4 XMPP协议 XMPP协议5是基于开源的XMPP即时通信协议,采用CS体系结构,通过GPRS无线网络用TCP协议连接到服务器,以架设开源的Openfne服务器作为即时通讯平台。系统主要由以下部分组成:一是服务器,负责管理发出的连接或者与其他实体的会话,接收或转发XML(ExtensibleMarkup Language)流元素给授权的客户端、服务器等;二是客户终端。它与

44、服务器相连,通过XMPP获得由服务器或任何其它相关的服务所提供的全部功能。三是协议网关。完成XMPP协议传输的信息与外部消息系统可识别信息间的翻译。再就是XMPP网络。实现各个服务器、客户端间的连接。系统采用客户端(Client)服务端(Server)架构体系结构。 XMPP工作原理图如下:图4-5 XMPP工作原理图 从上图中可以看出,客户端(Client)、服务器(Server)和网关(Gateway)构成了XMPP通信网络最重要的节。Server需要负担起Client的连接工作,同时还负责记录客户端信息。而Gateway则负责通信系统的联通工作。基本的网络形式是客户端通过HTTP连接到单

45、服务器,然后在之上传输数据。4.5 HTTP传输模块4.5.1 HTTP传输模块设计 HTTP模块负责将服务器与数据解析模块之间的数据传输与数据转换。从数据解析模块解析到的数据通过HTTP协议传输给服务器,收到响应并将数据传输给数据解析模块进行解析。 由于网络资源获取的过程是一个比较耗时的操作过程,为了使用户界面能够获得足够快的响应,并防止程序出现“假死”。要知道,在Android,如果超过两次的用户操作(如滑动触摸屏)没有被系统响应,则系统会在5秒之后会弹出程序“假死”的提示,提示用户关闭应用程序或等待,这是一种极其糟糕的用户体验。所以,一般在网络存取等过程中,一般都弹出进度框来让用户以等待网络存取的结束,并采用多线程的方式存取。为了提高网络访问速度,本软件将针对文本、图片以及语音的网络操作分别设一个线程进行网络存取。并采用线程池的思想进行管理。4.5.2 HTTP传输模块实现4.5.2.1 Android网络编程Linux内核是安卓软件设计的基础,它具有很强的网络互联功能。当前,国际上可供Android使用的网络接口仅有三种:标准Java接口、Apache接口以及Android网络接口。随着智能手机的发展,HTTP协议已然成为使用做广泛的协议,因为它能够提供更开放的网络资源。JDK可以为

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 研究报告 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服