安卓大作业——飞鸽传书(高仿微信)

产品介绍 项目背景 随着网络的出现,即时通讯软件便出现在了人们的生活中,即时通讯app可以帮助人们实现快速沟通,节省时间,提高效率。例如,团队成员可以在办公室或出差途中随时通过即时通讯app进行实时讨论和共享资源,避免沟通障碍,增进沟通的质量和效果。 技术框架 本次的软件开发主要以Java编程环境为主,在手机端编写安卓原生APP,在服务器后端使用SpringBoot框架为主,实现用户消息的转发和暂存,用户头像的上传与保存。 在软件的后端实现上,我使用SpringBoot框架,目的是使得产品的后期功能开发更加轻松,同时使用SpringBoot可以将服务端一键打包成jar包,简化服务器部署的复杂度。用户的头像使用腾讯云的对象存储保存,免去了调试与实际运行时头像存储位置不一致的问题,同时文件保存的可靠性和安全性也得到加强。 功能介绍 登录功能介绍 本次开发的APP与大部分软件不同,为保证软件的私密性,我们采用最小云端保存的方案,即将用户的数据尽量的放在本地,仅仅上传必须的内容。 用户初次使用本软件,软件会引导用户完成昵称和个性签名的配置,配置完成之后,系统会通过使用安卓的API生成一个几乎唯一的AndroidID作为用户的唯一ID。至此用户的ID基本信息就设置完成了。 头像上传 为保证更好的美观以及用户的体验,我们的软件可以自定义头像,用户可以从自己相册或者文件中选择一个自己喜欢的照片作为自己的头像。选择完成之后,软件便会上传头像,进入到欢迎界面。 扫一扫添加好友 使用扫一扫添加好友,在另一部手机的我的界面点击二维码的小图标,进入名片界面,使用另一部手机APP中的扫一扫功能扫描名片上的二维码,即可添加对方为好友。 好友聊天 选择一个好友,点击该好有,选择发消息,进入到聊天界面,在聊天框输入消息,点击发送,好友便会收到消息,并收到通知(需要打开通知权限)。 更换聊天背景 进入我的界面,点击关于,在关于界面中点击摇一摇更换头像开关,返回到聊天界面,摇一摇手机即可切换软件内部自带的聊天背景,此时去关于界面关闭摇一摇切换聊天背景,即可固定当前的聊天背景。 清空聊天记录 在消息界面,长按消息,软件会弹出一个界面您可以选择不显示该聊天,或者删除该聊天。 删除好友 在好友界面,点击任意好友,选择删除好友,再次确认,即可删除该好友,好友删除后,对方的好友列表中自己并不会消失,对方给自己发送的消息自己将无法收到。 技术实现 本次软件的核心功能便是用户消息的转发与暂存,网络的状况千变万化,如何保证消息能够被正确的接收和发送,避免消息被漏掉以及消息的实时性都是我们要关注的重点。 消息的封装 为保证消息的完整性和后期修改的灵活行,我们将消息封装在一个实体类中,并将该类序列化以便在Socket上传输。 package cn.shilight.myapplication.message; import java.io.Serializable; public class MessagObtian implements Serializable { private static final long serialVersionUID = 7471391170055841173L; public String getForUid() { return forUid; } public void setForUid(String forUid) { this.forUid = forUid; } public String getFromUid() { return fromUid; } public void setFromUid(String fromUid) { this.fromUid = fromUid; } private String forUid; private String fromUid; private int messageType; public int getMessageType() { return messageType; } public void setMessageType(int messageType) { this.messageType = messageType; } private String content ; final static int Tap = 0; final static int Text = 1; public MessagObtian(String forUid, String fromUid, int messageType) { // TODO Auto-generated method stub this.forUid = forUid; this.fromUid = fromUid; this.messageType = messageType; } public String getContent() { return content; } public MessagObtian setContent(String content) { this.content = content; return this; } } 图表 2消息类 ...

June 29, 2023 · 3 min · 晚晴