From 1068f5e467d56e2b968252984cb5e20a8c4771aa Mon Sep 17 00:00:00 2001 From: kaixed Date: Thu, 12 Dec 2024 16:42:17 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0README=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..56a7122 --- /dev/null +++ b/README.md @@ -0,0 +1,161 @@ +# kchat — 简单的即时通讯应用 + +欢迎使用 **kchat**,这是一款简单轻量的即时通讯应用,旨在展示如何使用现代 Android 开发技术构建一个基础的聊天应用。该项目实现了基本的聊天功能,并参考 **MVVM 架构**、**Kotlin**、**LiveData** 和 **ObjectBox 数据库**。 + +------ + +## 功能概览 + +### 核心功能 + +- [x] **实时消息传输**:通过 WebSocket 实现即时通讯,确保消息快速、实时传输。 +- [x] **支持文本、图片消息**:用户可以发送文字、图片、音频和文件,满足不同的交流需求。 +- [x] **添加/删除好友**:用户可以添加好友或移除不需要的好友。 +- [x] **搜索功能**:支持通过关键词在聊天记录中搜索消息,同时支持按文件类型筛选。 +- [x] **修改个人信息**:用户可以修改昵称、头像、个性签名等个人信息,提升个性化体验。 +- [ ] **修改用户密码**:用户可以更新自己的密码。 +- [ ] **查看好友动态**:支持查看好友分享的动态内容,形式包括文字、图片和视频,用户可以点赞或评论。 +- [ ] **支持多媒体消息**:支持发送音频、视频、文件等多种格式,满足用户不同的交流需求。 +- [ ] **群聊支持**:用户可以创建群组,与多人实时互动,并支持群管理功能(如设置群管理员、踢人)。 +- [ ] **消息通知**:支持推送通知,提醒用户有新的消息,未读消息可在通知栏中展示摘要。 +- [ ] **离线消息**:即使用户离线,服务器也会缓存消息,并在用户上线后自动同步到设备。 + +### 其他特性 + +- [ ] **消息加密**:所有用户消息在传输过程中都进行端到端加密,确保通信安全,防止信息泄露。 +- [ ] **个性化设置**:支持用户自定义头像、昵称、聊天背景,提供多种预设主题和自定义选项。 +- [ ] **深色/浅色模式**:支持自动或手动切换界面主题,适配不同的光线环境和用户偏好。 + +------ + +## 技术栈 + +- **Kotlin**:Kotlin 是一种现代化的 Android 开发语言,语法简洁、功能强大,能有效提高开发效率和代码可维护性。 +- 类 **MVVM 架构**:通过 `ViewModel` 和 `LiveData` 管理 UI 和数据的分离。未使用**DataBinding**只使用**ViewBinding**进行简化视图查找 +- **ObjectBox**:作为轻量级的数据库,ObjectBox 提供了高效的存储和快速查询能力,适合实时消息应用的本地数据存储需求。 +- **WebSocket**: 用于实现即时通信,低延迟并支持双向通信,确保实时数据传输。 + +--- + +## 安装与配置 + +### 1. 克隆项目 + +首先,将项目克隆到本地: + +```bash +git clone https://git.kaixed.com/你的用户名/kchat.git +cd kchat +``` + +### 2. 设置项目依赖 + +打开 Android Studio,点击 **Sync Project with Gradle Files** 以同步所有依赖项。 + +### 3. 运行应用 + +在 Android Studio 中选择一个设备或模拟器,点击运行按钮即可启动应用。 + +------ + +## 使用说明 + +1. 配置后端服务 +1. 更改App中的后端链接 + +------ + +## 目录结构 + +```plaintext +kchat-/ +├── app/ +│ ├── src/ +│ │ ├── main/ +│ │ │ ├── assets/ # 资源文件 +│ │ │ ├── java/com/kaixed/kchat/ +│ │ │ │ ├── ui/ +│ │ │ │ │ ├── activity/ +│ │ │ │ │ ├── adapter/ +│ │ │ │ │ ├── base/ +│ │ │ │ │ ├── fragment +│ │ │ │ │ ├── i/ +│ │ │ │ │ └── widget/ +│ │ │ │ ├── network +│ │ │ │ ├── service +│ │ │ │ ├── manager +│ │ │ │ ├── processor +│ │ │ │ ├── data/ +│ │ │ │ │ ├── local/ +│ │ │ │ │ │ ├── box/ +│ │ │ │ │ │ ├── entity/ +│ │ │ │ │ ├── model/ # 数据模型 +│ │ │ │ │ ├── remote/ +│ │ │ │ │ └── repository/ # 数据仓库 +│ │ │ │ ├── utils/ # 工具类(如日期格式化等) +│ │ │ │ └── viewmodel/ # ViewModel 层 +│ │ │ │ ├── App.kt # application +│ │ │ └── res/ +│ │ │ ├── layout/ # 布局文件 +│ │ │ ├── drawable/ # 图片资源 +│ │ │ └── values/ # 字符串、颜色等常量 +``` + +------ + +## 贡献 + +如果你对这个项目感兴趣,并希望做出贡献,请按照以下步骤进行: + +1. Fork 这个项目到你的 GitHub 账户。 +2. 在你自己的 Fork 中进行修改。 +3. 提交 pull request,我们会尽快审查并合并你的代码。 + +在贡献代码之前,请确保遵循以下准则: + +- 提交前请确保代码已经通过了所有测试。 +- 提交时请附带详细的提交信息,描述你所做的修改。 +- 如果你增加了新功能,请提供相关的文档和测试用例。 + +------ + +## 问题反馈 + +如果你在使用过程中遇到任何问题,或者有任何建议,可以通过以下方式联系我们: + +- 在 [Gitea Issues](https://git.kaixed.com/kaixed/kchat/issues) 提交问题。 +- 通过 [邮箱](mailto:support@kaixed8@gmail.com) 与我联系。 + +------ + +## 开发者 + +- [kaixed](https://git.kaixed.com/kaixed) + +## 许可 + +``` +MIT License + +Copyright (c) 2024 kaixed + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +``` +