基于andriod的语音即时通讯软件设计与实现内容摘要:

基于安卓系统的即时通讯软件的开发已经日臻成熟,对本系统的开发能够起到一个很好的导向作用。 风险分析 :主要分析在给定的制约条件和限定的期限内,是否能够设计出满足需求的系统,并实现必要的系统功能。 资源分析 :主要分析系统开发的外部资源,如开发工作人员数量是否合适,是否存在问题、系统开发的软硬件条件以及其他系统建立需要用到的资源。 7 技术分析 :主 要分析系统开发所需的相关技术的发展现状是否支持该系统运行,以及应采用什么语言和框架来对系统进行设计等。 (3)可行性分析在法律方面主要是研究系统的开发及实现是否合法、开发过程中签订的一些合同是否涉及到法律责任以及系统是否存在其他与法律相抵触的地方等。 在考虑多种系统实现方案后,应选择最优秀、最适合的方案进行开发。 本章主要对于系统的可行性研究进行了简要的分析,通过以上对本系统经济上、技术上、运行上、法律上的可行性,以及对于系统的主客观条件可行性的分析,认为该系统可以执行。 8 第 3 章 系统的需求分析 系统功能用例分析 针对用户的需求分析,设计系统主要功能如下: ( 1)用户注册:新用户需要注册后方能使用。 注册使用电子邮箱和密码。 ( 2) 用户登录:用户需输入相应用户名、密码来登录系统。 ( 3) 系统设置:用户可对系统一些基本选项进行设置,如提醒铃声、震动等。 ( 4) 查找、搜寻好友:用户可根据关键字搜索好友。 ( 5) 添加好友:用户可添加陌生好友。 ( 6) 向好友发送信息:用户可向好友发送信息,其中包括文本、语音及图片信息。 离线信息寄存于服务器,用户登录后可接收。 ( 7) 接受好友信息:用户可接收好友发送的信 息,包括文本、语音及图片,离线信息寄存于服务器。 当用户登录后可接收。 ( 8) 查看历史记录:用户可以查看历史聊天记录。 ( 9) 注销退出:用户注销后,下次使用该软件时需要重新登录; 退出后,下次登陆无需再次输入账号和密码。 下图为 系统 的 功能用例图 [2]: 9 图 31 系统功能用例图 系统非功能性分析 系统界面设计及整体风格 在系统整体风格及几面设计方面应尽量做到界面简洁明了、功能清晰实用、用户易学易用。 主要表现在以下几个方面 : ( 1)系统界面整体上风格协调,给用户提供良好体 验。 ( 2) 在保证网络访问畅通的条件下,提高网络响应速度,尽量防止出现假死情况。 ( 3) 注重突出功能,尽量使用户易懂易用。 ( 4) 错误提醒,在数据访问出错的情况下,应给出相应的提示。 系统可扩展性及安全性 系统要 有很好的扩展性 ,以 方便以后程序的维护和升级。 系统尽量采用弹性构架设计,通过代码复用及继承来增加程序的健壮性及可扩展性。 在安全性方面,要注重对用户隐私的保护。 用户密码等敏感信息不要使用明文进行传送,要进行相关的加密封装后再行传送。 对于数据库操作,如果发生事务故障,进行 数据回滚以保证数 据完整性。 10 错误日志和系统国际化 系统应该提供易于查检阅的日志,为日后程序的升级。 维护以及检修提供方便。 系统的错误日志的保存需要致力于日志时间,错误原因以及解决办法方面。 同时,由 全球Android 用户都能够自由下载手机软件 ,所以,应当完成相应的国际化的工作,使其能够支持英语等主流外语。 11 第 4 章 系统的 总体 设计 系统总体结构设计 系统总体结构 与其他一些即时聊天软件不同,本系统采用客户端 ——服务器端的系统构架而非客户端 ——客户端的系统构架,所以 两个客户端 之间 所有的 交流都 必须通过服务器。 在通讯过程中,采用 XMPP 协议,它是目前一种比较成熟的 IM通讯协议, 它 可以实现 Android IM 客户端与 PC Jabber 客户端进行通信。 系统总体系统构架 [3]如图 所示 : 图 41 系统总体构架图 如上图所示,整个构架以服务器为中心,服务器连接着众多的移动客户端( Android IM)与 PC Jabber 客户端以及数据库服务器。 服务器在此中间扮演了一个十分重要的角色,它要实现用户注册、会话管理、用户与服务器端通信、服务器之间信息交互、用户信息存储、身份权限验证、离线信息存储及用户是 否在线查询等等任务。 不过服务器端的实现部署并不在本论文的研究范围之内。 我们只需要根据服务器端提供的相关接口来进行通信即可。 客户端主要实现用户与系统的交互以及与服务器端进行通信, 主要是为数据提供进行接收。 发送、包装、解析等服务。 系统的功能模块结构图如图 42 所示: 12 A n d r i o d 语 音 即 时 通 讯 软 件用户注册好友操作用户登录退出登录系统设置添加好友和好友聊天搜索好友文本消息消息记录语音消息图片消息 图 42 系统功能模块结构图 由以上的功能结构模块图可知,本 系统主要实现了发送图片、文本消息、语音、表情,搜索好友,好友列表, LED 灯选择,声音提示,振动提示,铃声选择等模块。 客户端设计 客户端构架 本客户端系统采用通过 HTTP 协议的方式与服务器进行交互。 其中 HTTP 传输模块主要负责 HTTP 协议中转,提供数据传输工作, XML 解析模块负责解析协议字流。 MVC模式多被 软件 程序 内部结构 所 采用, 而 SQLite 数据库则被用来保存系统中的重要数据。 其构架设计图如图 43 所示: 13 服 务 器H T T P 传 输数 据 解 析 模 块模 型 对 象A n d r i o d 组 件 ( 制图 、 服 务 等 )S Q L i t e 数 据 库C o n t r o l l e r 控 制 器H T T P 传 输解 析本 地 数 据 存 储 图 43 客户端整体构架 如图 43 所示,在 Android 平台的客户端中 Http 传输模块负责网络通信层的服务器与客户端之间的连接。 数 据解析模块负责协议的解析操作,将从服务器端解析的协议转换为 对应 的模型对象,控制器、 VO 以及 Android 组件 三项都 由控制器进行统一的调动。 作为一种嵌入式数据库, SQLite 主要用于保存用户账户的的相关信息。 客户端结构模型设计 MVC[4]模式 是 上世纪八十年代发明的一种设计模式 , 这种模式主要在交互式系统设计中所使用。 本系统采用 MVC 模式进行构建。 MVC 在应用中被分为 Model(模型 )、View(视图 )和 Controller(控制器 )。 Model 负责 业务数据和信息处理模块, 主要实现封装 数据 的 功能。 View 主要负责与用户进行交互,具体就是向用户展示模型的状态及控制信息,并根据用户的输入做出反馈。 Controller 作为逻辑模块,主要负责信息流的控制, 14 完成具体的业务逻辑功能。 它是双向的,即控制器既要将 View 上的操作数据反馈到Model 上,以完成逻辑操作,又要讲 Model 上的数据映射到 view 上来完成与用户的交互。 MVC 模式分离了业务层和视图层,这为 Andriod 软件系统设计带来了很多好处。 首先,程序工作者可以只改变 View 层代码却不需要改写 Model 和 Controller 层的代码。 其次,业 务流程和规则的改变仅需要改变 Controller 层代码就可以了。 低耦合性以及高度的重用性保证了程序的健壮性和扩展性。 业务层和视图层的隔离,使得程序更容易维护和修改,降低了运维的难度。 服务器端设计 XMPP 开源社区为了解、使用 XMPP 协议提供了一个交流的渠道。 这个交流平台使用XMPP 路由器 作为内核,以完成数据包在各个基本组件间的交换。 其主要功能为: ( 1) 会话管理器:负责客户端会话认证,在线状态,用户联系表等 ( 2) 数据存储器( XDB) 连接数据库系统,保持用户信息、通信日志等 ( 3) 连接器管理器:管理与客户端之间的连接 ( 4) 服务器连接器:管理 XMPP 服务器之间的连接 ( 5) 传输器:建立 XMPP 服务器与非 XMPP 服务器通信 ( 6) DNS 工具:负责域名的解析,查找相应的 XMPP 服务。 ( 7) 日志信息管理器:对所有的会话消息进行跟踪,同时服务器端出错时也会记录相应的信息。 XMPP 社区提供了众多的 XMPP 兼容服务器供用户使用, 此处仅仅介绍服务器的设计,其具体实现不在本论文研究范围之内。 数据库设计 Android 的数据存储方式是多种多 样的, 如 Files、 SQLite 以及 Network 等。 其中Shared Preferences 和 SQLite 是 Android 中最常用的数据存储方式。 系统配置信息数据设计 Shared Preferences 是一种类似于 ini 文件的格式存储数据,主要用于保存系统的配 置信息。 由于采 了 Activity 栈形式 ,使得 系统 总体 资源不 充分 时, 只能 回收某些界面, 因此有些操作需要在不活动时保留下来,以便下次激活时使用。 这时候, Shared Preferences 就成为了最方便快捷的 存储方式。 本程序中设置 了对响铃、震动和 LED 灯闪烁的提醒设置,便使用 Shared preferences 15 进行数据存储,下次启动时仍将在此处保留上次设置的效果。 除此以外,由于系统会自动记住用户的用户名和密码,在用户没有采取注销退出的情况下,下次登录时系统将会检查该状态根据情况将自动登录。 此时状态的判断也将采用此存储方式。 SQLite 数据库设计 SQLite 是一种轻量级数据库,功能强大使用起来方便快捷,现在已被广泛采用于Andrid 软件系统的开发。 根据本应用的特点,本程序所需用的数据库有:用户账户数据库、图片数据库 、聊天历史记录数据库。 其表的创建如下: 用户账户数据库:存储用户的个人数据。 (CREATE TABLE + TABLE_ACCOUNT + ( + + INTEGER PRIMARY KEY, + + INTEGET, + + TEXT UNIQUE ON CONFLICT REPLACE,+ + TEXT, + + TEXT, + + BLOB, + + INTEGER, + + INTEGER, + + INTEGER + )。 )。 图片数据库用:存储图片信息。 (CREATE TABLE + TABLE_PIC + ( + + INTEGER PRIMARY KEY, + + TEXT UNIQUE ON CONFLICT REPLACE, + + TEXT, + + INTEGER + )。 )。 聊天历史记录数据库:存储聊天历史记录。 ( CREATE TABLE + TABLE_CHATS+ ( + + INTEGER PRIMARY KEY, + + INTEGER, + + INTEGER, + + TEXT,+ 16 + INTEGER,+ + TEXT,+ + LONG,+ + INTEGER,+ + INTEGER,+ + TEXT,+ + INTEGER, + + LONG + )。 )。 SQLite 数据库遵行 SQL 语言的语法规则,能够使用 execSQL()来执行大部分的SQL 语句。 安全性 SQLite 数据库 能够独立处理事务,这是因为它在数据库级上具有很强的独占性。 这意味着多个线程可以同一时间内从统一数据库读取,但只有一个可以写入。 在某个进程或线程进行数据库写前,必须获得独占锁。 在数据库进行读写时,必须注意, 不能同时有两个线程同时进行数据库的写入操作,否则将可能造成数据锁死等问题,是数据库不能继续进行其它操作。 网络层整体构架 系统网络会话采用 XMPP 协议,底层使用 HTTP 进行数据传输。 根据即时消息发送的顺序,其流程为:发送模块将将要发送的消息(文本、语音等)准备好,然后经过数据封装( XMPP 数据封装),然后经 HTTP 传输与服务器进行交互。 服务器对数据进行 解析,找出消息将要发送的地址,服务器检。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。