基于android开发平台的聊天软件实现(论文+源码)_kaic

摘要:互联网时代的到来使得手机通讯变得更为普及和强大,人们可以随时随地地进行交流。由于工作的繁忙以及生活节奏的加快,人们无法有更多时间展开面对面的交谈,导致在线聊天软件的使用更加频繁,所以本文尝试设计了一款在线聊天软件。为了更好的用户体验,我们开发了一款界面相对简单、交流方便快捷且操作相对简单的即时聊天软件。介绍了所用到的开发软件与相关技术。并且,本次研究基于Android平台,本聊天软件的主要功能有:用户的登录与注册、一对一聊天(包括文字聊天、发送语音信息和表情的发送),修改个人信息,更换头像,修改密码等功能。本篇论文首先介绍了聊天软件的发展历程与背景,然后介绍了本次课题的目的与意义,接着还列出了软件的系统架构、各个模块与功能实现的流程并重点介绍了即时通信实现的相关原理和实现的流程,最后也对项目进行了一些相关的测试与检查试验。
关键词:Android;登录注册;即时通信;多线程;Socket

Abstract
The advent of the Internet era makes mobile communication more popular and powerful. People can communicate anytime and anywhere. Due to the busy work and the accelerated pace of life, people can not have more time to carry out face-to-face conversation, resulting in more frequent use of online chat software, so this paper attempts to design an online chat software. For better user experience, we have developed an instant chat software with relatively simple interface, convenient and fast communication and relatively simple operation. The development software and related technologies are introduced. Moreover, based on the Android platform, the main functions of this chat software are: user login and registration, one-to-one chat (including text chat, sending voice information and expression), modifying personal information, changing avatar, modifying password and so on. This paper first introduces the development process and background of chat software, then introduces the purpose and significance of this topic, then lists the system architecture of the software, the implementation process of each module and function, focuses on the relevant principles and implementation process of instant messaging, and finally carries out some relevant tests and inspection tests on the project.
Keywords: Android; Login and registration; Instant messaging; Multithreading; Socket 
目  录
第1章 绪论
1.1选题背景及意义
1.1.1个人即时通讯软件
1.1.2企业即时通讯
1.2国内外发展现状简述
1.3主要设计内容及预期目标
第2章 关键技术介绍
2.1 Android平台
2.1.1 Android平台的特征
2.1.2 Android体系结构
2.2 TCP/IP协议
2.3 C/S模型
2.4 Android的MVC架构
2.4.1视图层(View)
2.4.2 控制层(Control)
2.4.3 模型层(Model)
2.5多线程技术
第3章 系统的总体设计
3.1系统的整体流程
3.2服务器功能模块图
3.3客户端功能模块图
第4章 软件的具体设计实现
4.1系统实现原理
4.2服务器端功能具体实现流程
4.2.1用户登录验证模块
4.2.2信息的转发模块
4.3客户端功能具体实现流程
4.3.1用户登录模块
4.3.2用户注册模块
4.3.3用户消息发送模块
4.3.4用户设置模块
4.3.5 用户添加好友模块
4.3.6 用户退出登录模块
第5章 软件运行与测试
5.1用户个人操作相关界面
5.1.1 用户登录界面展示
5.1.2 用户注册界面展示
5.1.3 聊天消息界面展示
5.1.4 通讯录展示
5.1.5 添加好友界面展示
5.1.6 消息验证界面展示
5.1.7 个人信息界面展示
5.1.8 头像更换界面展示
5.1.9 重置密码界面展示
5.2 聊天功能相关展示
5.2.1 即时聊天界面展示
5.2.1 语音消息发送界面展示
5.2.2 位置信息界面展示
5.2.3 退出登录界面展示
结 论
参考文献
致  谢
 
第1章 绪论
1.1 选题背景及意义
随着信息技术的高速发展,人类的通讯变得高效而便捷。得益于人们对沟通的迫切需求,即时通讯得以出现并获得了长足的发展。在本篇文章中,我们详细介绍了基于Android系统开发而出的即时通讯软件,并提供了真实而具体的案例加以说明。
为了提高市场竞争力,有必要对整个市场进行仔细检查并提供优质的客户服务。公司需要在复杂的环境中采取行动,员工与领导或者是员工与员工之间的沟通的即时性就显得特别重要。在线即时聊天系统是企业进行交流和沟通的平台。本系统能够及时反馈信息,立即处理和采取相应的措施。
移动网络通网络应用的重要体现。移动即时通讯传递则是移动网络应用程序的重要方面。该聊天系统主要用于个人聊企业,学校和小型局域网等受众使用。该应用程序可以使近距离通信更快,更方便并且更有效地反映现代即时通信的特性该系统可以满足个人聊和学校内部的在线即时通信需求。在内部网络正常运行时提供即时通讯功能。该系统是使用javaSE(服务器)和Android(客户端)开发的。局域网中使用的系统为中小企业之间的合作和沟通提供了强大的工具,有助于加强公司员工之间的沟通和工作效率的提高。
当前,许多企业为了保证沟通的便捷与高效,都企业内外部的即时通讯投入了大量的资金和精力,以下是适用于不同需求的即时通讯软件的介绍:
1.1.1 个人即时通讯软件
个人即时通讯软件称为个人IM,典型的代表性产品(如微信和QQ)主要由个人用户使用,这些产品的用户通常可以免费使用。在开发此类产品的各种功能时,公司通常要求注册用户输入所需的个人信息,例如昵称、性别、年龄、地址、职业和教育背景等。公司设计这些功能并不是因为有利可图,而是对于不同的用户需求来说,可以尽可能方便地进行聊天和交流。
1.1.2 企业即时通讯
企业级的即时通讯产品,可称作企业IM,主要是以企业用户使用为主的,具体可分为以下三种不同的类型:
(1)局域网软件型企业即时通讯产品
基于局域网的企业即时通讯软件(例如Qida Longchat)必须部署在自己的服务器上。所有信息和数据都存储在我们的服务器上。一般而言,系统各方面安全性都较高,所以一般在政府,军队和大中型企业集团更常用。
(2)互联网平台型企业即时通讯
互联网平台型企业即时通讯软件,我们不需要手动的在自己服务器上部署软件,我们只需要下载客户端即可使用,产生的和使用的数据都是在云服务器部署和保存的,这样也就导致了数据的安全性不高,但是成本也相对较低。
(3)API云服务即时通讯产品
API云服务即时通讯软件,对使用者的技术有一定要求,使用者需要拥有独立技术开发能力以及自己的APP产品,通过调用相关API接口将项目集成到自己的产品中。
1.2 国内外发展现状简述
即时通讯最初是由AOL,Microsoft,Yahoo,腾讯和其他独立于运营商的即时通讯供商提供的。但是,随着科技的不断进步,它们的功能越来越丰富,应用程也越来越广泛,并且即时通讯増强软件(尤其是IP电话)的某些功能正在转移并取代传统的电信服务。企业必须釆取步骤应对这一挑战。
2019年,相关机构发布了一份“全球最受欢迎的社交软件榜”,从这份榜单中可以看到全球最受欢迎的即时通讯软件用户数量排名。在全球范围内,微信以11.11亿用户排名榜单第三,而QQ则8.23亿用户排名第四。作为我国用户数量最多的即时通讯平台,微信只能排到第三,排在第二的是Facebook,用户数达到13.03亿,值得一提的是,排名榜首的是WhatsApp,其用户数量超过了16亿,比微信高出了整整5亿的用户。
2006年6月,中国移动推出了自己的即时通讯工具“飞信”,中国联通也推出了即时通讯工具“超级信”,但由于推迟进入市场,用户规模和品牌不如原始的众所周知一些即时通讯服务提供商。近年来,即时通讯市场的用户规模迅速扩大,市场规模具有广阔的前景。随着 Internet用户的快速增长,即时通讯传递用户的数量也在增加。2004年,中国的即时通讯用户数量达到7,000万,而2005年达到9,300万。2006年,中国的即时通讯用户数量增长了近三成,达到1.2亿。此外,根据摩根士丹利( Morgan Stanley)发布的数字数据,艾瑞咨询( i Research)发现,中国的即时通讯市场市值在2005年约为6200万美元,在2006年为7700万美,2010年则首次破亿,达到1.14亿美元。
移动即时通讯市场具有迅速增长势头和非常诱人的发展空间。根据艾瑞咨询( i Research)2007年5月发布的研究报告,2005年中国动即时通讯用户数量达到500万。2006年,中国移动即时通讯注册用户达到700万。未来几年,移动即时通讯用户数量将快速增长,到2010年,中国移动预计将达到2000万即时通讯用户。
1999年,腾讯推出了OICQ,从那以后,即时通讯已经在中国发展了二十余年。当前,即时通讯领域的国内竞争从“诸侯之间的战斗”的情形变为了腾讯公司一家独大,仅微信而言,注册用户就超过了十亿,实时在线用户最多8亿。2005年,i Research对即时通讯市场进行了调查统计,QQ占据了78.8%的市场份额,MSN为3%,网易泡泡为1.6%,淘宝旺旺为2.1%,Yahoo Messenger为0.7%等。而到了2020年,中国即时通信用户规模为9.81亿人,其中99.3%使用手机登录,微信月活用户更是突破了11亿,QQ则为8亿人,腾讯公司继续领跑全中国。
如今,即时通讯行业继续快速发展,未来的发展趋势是集成多种服务,扩展移动平台,企业用户渗透率以及包含付费内容。移动运营商原先有很大的机会深入到市场之后,但是目前看来它们并没有很好地把握,因而通讯市场的地位遭受很大的威胁。移动运营商可以访问与即时通讯通讯行业的发展兼容的多服务资源。在此阶段,腾讯在内的公司都可以利用即时通讯开发过程中积累的用户习惯以及业务和运营经验来获得更快的成功。

1.3 主要设计内容及预期目标
本文的主要研究内容是设计和实现Android平台的即时通讯系统,以实现移动设备和PC终端之间的相互通讯。具体包括以下几个方面:
1. Android平台上即时通信系统的体系结构:为了实现整个系统,提出了一种合理的体系结构。
2. TCP / IP协议:介绍TCP / IP协议的内容并分析该协议。
3.移动即时消息系统的实现:根据提出的系统架构,我们将详细说明移动即时消息系统的设计和具体实现,最后演示和操作该系统。

第2章 关键技术介绍
2.1 Android平台
Android操作系统是Google和开放电话联盟共同开发的移动设备操作系统。 它的最早发布版本始于2007年11月,当时首次发布的便是Android1.0 Beta,还顺带着发布了多个更新版本的Android操作系统。到2010年底,Android系统的 市场额正式超过已经占领市场10年诺基亚Symbian系统。2012年2月,Android操作系统在全球智能手机操作系统中的市场份额达到52.5%,成为了全球最大的智能手机操作系统,2020年,Android系统的市场占比已经达到了 97.7%,形成垄断之势。
2.1.1 Android平台的特征
1.它提供用于访问硬件的API函数,并简化了诸如相机和GPS之类的硬件的访问过程。
2.它自己具备的运行时虚拟机;
3.提供用户调用的丰富界面控件,以加速用户界面开发并确保 Android平台上程序界面的一致性。
4.提供一种轻量级的进程间通信机制,该机制旨在允许进程组件进行通信并发送系统级广播。
5.该服务作为后台运行的组件提供,没有用户界面。
6.支持高效、快速的数据存储。
2.1.2 Android体系结构
软件堆栈层体系结构分为四个层,如下图2-1所示:
 
图2-1 Android的体系结构图
丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons), 甚至可嵌入的web浏览器。
内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。
通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。
活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。
Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:
系统 C 库:一个从BSD继承来的标准C系统函数库 Libc ), 它是专门为基于Embedded linux的设备定制的。
媒体库:基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG。
Surface Manager:对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。
LibWebCore:一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。
2.2 TCP/IP协议
TCP协议是网络通信的基本核心协议,并且Java还提供了一个Socket类库来抽象化TCP协议和三次握手,这是基于TCP协议的常见通信方法。在本节中讨论TCP协议之前,让我们首先讨论一些概念。
2.2.1 TCP协议
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK
(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。在这之后,连接就建立起来了,这个连接将一直保持活动状态,直到连接超时或者客户端和服务器任何一方发出一个FIN(结束)信号是结束。这种通信模式也叫客户端/服务器(C/S)模式。如下图2-2 TCP的三次握手。
由此可见,通过客户端和服务器的“三次握手”,双方可以建立畅通的通信信道,在此信道上双方互相传输数据。
 
图2-2 TCP的三次握手

2.3 C/S模型
所谓的C/S模型,就是客户机/服务器网络。在C/S模型中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需的网络资源,而服务器为客户机提供网络必须的资源。通过C/S模型可以从分利用两端硬件环境的优势,将任务合理分配到客户端和服务器端来实现,所以C/S模式具有以下几个优点:
(1)因为在客户端上有一套完整的系统软件,具有很强的交互性,系统工作人员在运用系统时可以获得出错提示、在线帮助等较强功能;
(2)由于C/S模式是配对的点对点的结构模式,因此多采用局域网的协议,并且通常是学校内部固定的从事学生学籍管理工作的用户群,所以安全性较高;
(3)因为C/S模式只有两层逻辑结构,因此网络通讯量低,传输速度快,占用网络资源少。
随着Android手机性能的不断提升,使用C/S架构将一些需要较长时间处理的功能放置到客户端。使用户得到更好的网络传输,提升用户随着Android手机性能的不断提升,使用C/S架构将一些需要较长时间体验。
2.4 Android的MVC架构
在客户端的实现中,我们用到了MVC模式的架构思想,大大提高了程序模块化的程度。
 
 
图2-3 Android MVC架构

2.4.1 视图层(View)
视图主要提供一种用于显示用户数据输入界面和模型数据显示功能的界面功能的机制,并且还包括信息提示功能。 此方面主要介绍Xml配置文件,包括样式布局文件(样式),动画效果布局文件和图像布局文件。
2.4.2 控制层(Control)
控制层主要负责调度系统响应的流程,管理用户界面的逻辑流,用户交互如何影响数据模型以及数据模型如何影响用户交互的过程。这些是通过Android活动完成的。在Android开发中,配置文件AndroidManifest.xml充当控制器,并将文件中的各种组件视图配置为在模型更改时调用该视图。
2.4.3 模型层(Model)
控制层主要作用是对进行数据库的增、删、改、查等操作。并包含了对信息的接受、发送、请求的提交等一系列操作。具体到在程序中是通过Service实现数据的发送和接收。当一个Activity启动后动态的调用相关函数将它和Service进行绑定。
2.5 多线程技术
多线程是构建大型系统的重要技术,尤其是在效率和性能之间进行权衡的情况下。正确使用多线程可以显着提高系统性能。使用多线程的优点是:
(1)使用线程将任务放置在需要长时间在后台进行处理的程序中。
(2)用户界面可能更具吸引力。例如,当用户单击按钮触发特定事件的处理时,可以弹出一个进度条以显示处理的进度。
(3)可以加快程序执行速度。
(4)线程有助于完成等待的任务,例如用户输入,读取和写入文件以及通过网络发送和接收数据。这样可以释放宝贵的资源,例如内存使用率。
Java是一种多线程语言,它允许多个线程同时运行以处理多个任务。同时,Java具有内置的多线程控件,可以大大简化多线程应用程序的开发。它提供了一个Thread类,该类封装了所有相关的线程控制,并负责一系列逻辑控制操作,例如线程准备,运行,睡眠,暂停,恢复,结束和退出。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/28038.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node入门以及express创建项目

前言 记录学习NodeJS 一、NodeJS是什么? Node.js 是一个开源和跨平台的 JavaScript 运行时环境 二、下载NodeJs 1.下载地址(一直点击next即可,记得修改安装地址) https://nodejs.p2hp.com/download/ 2.查看是否安装成功,打开命令行 nod…

css入门宝典

3.1.4 通配符选择器 语法 : *{} 作用 : 让页面中所有的标签执行该样式,通常用来清除间距 例子 : *{ margin: 0; //外间距 padding: 0; //内间距 } 一 CSS基本语法 1基础知识 1.1概述 Css (层叠样式表)是种格式化网页的标准方式, 用于控制设置网页的样式&#xff…

windows系统,家庭自用NAS。本地局域网 Docker安装nextcloud

windows系统,家庭自用NAS。本地局域网 Docker安装nextcloud 1、docker安装 太简单了,直接去搜一搜。 docker-compose 相关命令 docker-compose down docker compose up -d2、还是使用老的 在你需要挂载的目录下,新建一个文件,…

POC EXP | woodpecker插件编写

woodpecker插件编写 目录 woodpecker介绍woodpecker使用插件编写 安装环境 woodpecker-sdkwoodpecker-request 创建Maven项目 Confluence OGNL表达式注入漏洞插件编写 创建Package包和Class类编写POC 漏洞POC代码编写导出jar包将jar包放入woodpecker的plugin目录运行woodpeck…

springCloudAlibaba之分布式网关组件---gateway

gateway-网关 网关spring cloud gateway 网关 在微服务架构中一个系统会被拆分成多个微服务。那么作为客户端(前端)要如何去调用这么多的微服务?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去用。 这样的架构&#x…

【文档智能】实践:基于Yolo三行代码极简的训练一个版式分析模型

一、数据集 本文以开源的CDLA数据集做为实验,CDLA是一个中文文档版面分析数据集,面向中文文献类(论文)场景。包含以下10个label: 数据集下载地址:https://github.com/buptlihang/CDLA 数据集是labelme格式…

「茶桁 AI 秘籍-CV 篇」预告

Hi, 大家好。 我是茶桁。 咱们的《茶桁的 AI 秘籍》系列距离上一个系列课程《人工智能 BI 核心》已经有一段时间了,终于有时间可以写 CV 部分的课程,主要也是最近一段时间我确实有点忙不过来。 那么咱们 CV 的课程会有一些变化,就是会改为收…

搭建k8s集群报错unknown command “\u00a0“ for “kubeadm init“

搭建k8s报错unknown command “\u00a0” for “kubeadm init” 网上搜了一下,是因为复制过来的命令前面包含了空格,将复制的命令放到idea可以清楚看到几个命令前面有空格,删除掉就好了,记录一下

Github入门教程,适合新手学习(非常详细)

前言:本篇博客为手把手教学的 Github 代码管理教程,属于新手入门级别的难度。教程简单易操作,能够基本满足读者朋友日常项目寄托于 Github 平台上进行代码管理的需求。Git 与 Github 是一名合格程序员 coder 必定会接触到的工具与平台&#x…

React+TS前台项目实战(六)-- 全局常用组件Button封装

文章目录 前言Button组件1. 功能分析2. 代码注释说明3. 使用方式4. 效果展示(1)有加载动画,执行promise函数(2)无加载动画,执行click事件 总结 前言 今天这篇主要讲全局按钮组件封装,可根据UI设…

2023年13个最适合销售电子书的WordPress主题

欢迎来到我们用于销售电子书和其他数字/可下载产品(软件、应用程序、图标集、主题等)的最佳WordPress主题的完整集合。 这些主题有内置的支付网关,可以通过 PayPal、信用卡等处理安全支付。(易于配置!) 最…

如何进行文件映射

创建一个文件WebMvcConfig package com.itheima.config;import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.…

红队攻防渗透技术实战流程:中间件安全:JettyJenkinsWeblogicWPS

红队攻防渗透实战 1. 中间件安全1.1 中间件-Jetty-CVE&信息泄漏1.2 中间件-Jenkins-CVE&RCE执行1.2.1 cve_2017_1000353 JDK-1.8.0_291 其他版本失效1.2.2 CVE-2018-10008611.2.3 cve_2019_100300 需要用户帐号密码1.3 中间件-Weblogic-CVE&反序列化&RCE1.4 应…

zip加密txt文件后,暴力破解时会有多个解密密码可以打开的疑问??

最近在做一个关于zip压缩文件解密的测试,发现通过暴力解密时,会有多个解密密码可以打开,非常疑惑,这里做个问题,希望能有大佬解惑。 1、首先在本地创建一个113449.txt的文件,然后右键txt文件选择压缩&…

RoCE网络架构在高性能计算的应用

浅析RoCE在高性能计算的应用 在高性能计算(HPC)系统的发展初期,通常选择专业网络解决方案,如Myrinet、Quadrics和InfiniBand,而不是以太网解决方案。通过定制网络方案可以有效解决以太网解决方案的限制,增强带宽、降低延迟、改善拥塞控制。 2010年,IBTA推出了RoCE协议技…

PyQT5 键盘模拟/鼠标连点器的实现

近来在玩一个游戏,找不到合适的鼠标连点器,不是有广告就是功能太复杂,自己写了一个,分享出来,如果有需要的可以自行运行研究。 准备工作 Python版本:Python 3.12.3;运行前确保pyQT5已经安装: pip install PyQt5程序运行界面: 程序代码: 通过引入单独的常量和变…

智能计算系统-概述

1、人工智能技术分层 2、人工智能方向人才培养 3、课程体系的建议 4、智能系统课程对学生的价值 5、智能计算系统对老师的价值 6、什么是智能计算系统 7、智能计算系统的形态 8、智能计算系统具有重大价值 9、智能计算系统的三大困难 10、开创深度学习处理器方向 11、寒武纪的国…

用一个ESP32S3-Zero把有线键盘变为无线

三脚猫最近一直琢磨,那些喜欢买剪线键盘,以及自制键盘瞎折腾的人都是怎么搞的。经过不懈努力,终于想明白除了直接的硬件一个个pin针的高低电压判断后转给蓝牙,拿到现成的古董剪线键盘还有一个方式其实是在usb host转发给蓝牙类似这…

北斗三代一体式数传终端短报文

北斗三代一体式数传终端短报文M20C-V30针对船载通信和导航应用推出的一款支持北斗 RDSS/RNSS 功能的船载一体机。北斗数传终端内部集成了北斗多频天线、射频、基带以及主控等功能单元,可实现 RDSS 定位、短报文通信和 RNSS 导航定位等功能。M20C-V30型北斗数传终端体…

Java线程池的抛弃策略

Java线程池的抛弃策略 Java线程池是Java并发编程中非常重要的一个组件。它通过重用已创建的线程来减少线程创建和销毁的开销,从而提高应用程序的性能和响应速度。然而,当线程池中的任务数量超过其处理能力时,就需要一种机制来处理新提交的任…