• 基于安卓(Android)的即时实时聊天APP软件


    安卓即时聊天软件

    实习目的及要求

    Android 开发提高:

    提供6个基础样例代码,发挥想象力和创造力对其中一个进行改进和提高,比如:增加程序的功能,改进程序的人机交互性,以及提高程序运行的性能等。

    实习选题的背景及目标

    背景:安卓(Android)是一种基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。伴随着Android版本不断的升级,Android在全球的市场份额不断提升,已经占用绝对的优势,本次实习,编写安卓小程序,练习安卓开发。

    目标:

    熟悉 Android 开发环境和基本操作;编写 hello world 程序。

    进一步熟悉 Android 开发环境和基本操作;修改并增加程序的功能。

    设计方案

    类图

    在这里插入图片描述

    流程图:

    在这里插入图片描述

    对各种类的介绍:

    类名功能
    XmppConnection连接的实现类,采用单例模式,连接的协议是;XMPP协议,在利用asmack包的api
    RegisterActivity注册类,实现了注册功能,注册者需要输入邮箱、账号、用户名、密码,完成注册
    LoginActivity登录类,实现了登录功能,登录者需要输入用户名、密码,完成登录
    FriendActivity好友显示类,在里面显示好友列表,可以点击好友进行聊天
    AddFriend加好友的类,输入账号即可添加
    GroupActivity好友群类,在里面显示群的列表,可以点击进行聊天
    AddGroup加群的类,输入群的名字即可添加
    ChatActivity聊天的类,实现了文字和图片的发送。在好友列表和群的列表都可以进入。

    实习环境与主要步骤描述

    硬件平台:lenovoR720 操作系统:Windos10、Android、Centos7 使用的软件:Android Studio 开发语言:java

    主要步骤:我采取的是使用基于XMPP协议的方式进行通讯,服务器使用已经写好的openfire软件,并且可以部署到云服务器上,实现跨局域网通讯。客户端使用asmack的开源库进行开发,asmack是一套很好的开源即时通讯api,是基于Xmpp协议的实现。

    ①首先写连接类XmppConnection,采用的是单例模式,全局共享一个连接。下表是XmppConnection的一些属性和方法介绍。

    属性:

    属性名介绍
    XMPPConnection connection和服务器的连接,实现功能主要考它
    FileTransferManager fileManager用于文件发送,目前只实习了图片发送
    MultiUserChat multiUserChat用户群聊

    方法:

    方法名参数返回值功能介绍
    XMPPConnection getConnection()XMPPConnection类型;的连接返回连接
    boolean createRoom(String roomName, String password)roomName:房间名字 password:密码Boolean类型,返回是否创建成功这里的房间就是群组,功能是创建群组
    FileTransferManager getFileTransferManager()FileTransferManager 类型,用于文件发送返回文件控制;类,实现文件传输

    ②编写注册类RegisterActivity,实现普通的注册功能。下表是对RegisterActivity 的一些属性和方法介绍:属性:

    属性名介绍
    EditText etEmailEmail输入框,用于输入Email
    EditText etAccount账号输入框, 用于输入账号
    EditText etName用户名输入框, 用于输入用户名
    EditText etPassword密码输入框, 用于输入密码
    Handler handler用于控制界面的信息

    方法:

    方法名参数返回值功能介绍
    void init()初始化控件,以及一些监听器
    void register()用于实现注册功能

    ③编写登陆类LoginActivity,实现登陆功能。下表是对LoginActivity的一些属性和方法介绍:

    属性:

    属性名介绍
    EditText etUser账号输入框,用于输入账号
    EditText etPassword密码输入框,用户输入密码
    Button btnLogin登录按钮
    Button btnRegister注册按钮
    Handler handler用于控制界面的信息

    方法:

    方法名参数返回值功能介绍
    void init()初始化各种控件,以及设置监听器
    void login()用于实现登录的功能

    ④编写朋友显示类FriendActivity,实现好友数量的显示。下表是对FriendActivity 的一些属性和方法介绍:

    属性:

    属性名介绍
    ListView friend_list好友列表显示的控件
    ArrayList m_friends好友的姓名
    BottomBar mBottomBar底部的菜单栏,用于切换到群聊
    Handler handler用于控制界面的信息

    方法:

    方法名参数返回值功能介绍
    void init()初始化各种控件,以及设置监听器
    void loadFriends()加载好友列表
    void ;addSubscriptionListener()添加监听器查看是否有人加你

    ⑤编写AddFriend类,实现添加好友的功能。下表是对AddFriend的一些属性和方法介绍:

    属性:

    属性名介绍
    EditText et_friend_name输入框,用于输入好友姓名
    Button btn_addfriend添加好友

    方法:

    方法名参数返回值功能介绍
    void init()初始化各种控件,以及设置监听器
    void addFriend()用于加好友功能实现

    ⑥编写GroupActivity类,实现群的显示功能。下表是对GroupActivity的一些属性和方法介绍: 属性:

    属性名介绍
    ListView group_list;群显示列表
    ArrayList m_groups群的名字的列表
    BottomBar mBottomBar底部的菜单栏,用于切换到好友聊天
    Handler handler用于控制界面的信息

    方法:

    方法名参数返回值功能介绍
    void init()初始化各种控件,以及设置监听器
    void loadGroups()用于加载群组的名字

    ⑦编写AddGroup类,实现添加群的功能。下表是对AddGroup的一些属性和方法介绍:

    属性:

    属性名介绍
    Button btn_add_group;
    EditText et_group_name;

    方法:

    方法名参数返回值功能介绍
    void init()初始化各种控件,以及设置监听器
    add_group(){用于加群的实现

    ⑧编写ChatActivity类,实现聊天的功能。下表是对AddGroup的一些属性和方法介绍:属性:

    属性名介绍
    EditText et_input;内容的输入框
    RecyclerView msgRecyclerView用于内容的显示
    ChatManager chatMan个人聊天使用的管理
    MultiUserChat muc群聊使用的管理

    方法:

    方法名参数返回值功能介绍
    void init()初始化各种控件,以及设置监听器
    void openAlbum()打开相册
    void ;addChatListener()单人聊天消息的监听
    void ;addGroupListener()群聊天消息的监听
    void ;addFileListerer()文件的监听

    实习的结果与讨论结果测试均是在公网下测试登录界面和注册界面:

    在这里插入图片描述

    在这里插入图片描述

    好友列表和群列表显示:(底部的菜单栏可以切换好友列表和群列表)

    在这里插入图片描述
    在这里插入图片描述

    好友列表侧边的滑动菜单,以后可以设置为用户个人信息

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    群聊测试(由自己发信息都是猫头像,别人发都是狗头像,所以其实那两条狗是两个人发的信息):

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    发布 .NET 7 MAUI / MAUI Blazor 应用到 Windows 应用商店
    AUTOSAR CAN主动与被动唤醒分析
    我用ChatGPT写2023高考语文作文(二):全国乙卷
    【React Router v6】快速上手react-router-dom6(对比 router5)
    TTS行业调研20221201
    京东手机销售数据:2023年9月京东手机行业TOP10品牌排行榜
    获取iOS和Android的app下载渠道和相关参数的方式
    Web架构安全分析/http/URL/Cookie攻击
    如何使用elementui实现一个根据页面进度实时增长/前进的进度条
    岛屿个数(dfs)
  • 原文地址:https://blog.csdn.net/newlw/article/details/126955046