zhibo/android-app/移动端功能设计分析报告.md
2025-12-30 16:22:27 +08:00

722 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 直播平台Android移动端功能设计分析报告
> 生成时间2024年12月29日
> 项目路径android-app/
> 包名com.example.livestreaming
---
## 一、项目概述
### 1.1 技术架构
| 技术栈 | 说明 |
|--------|------|
| 开发语言 | Java (主) + Kotlin (部分) |
| UI框架 | Material Design 3 + ViewBinding |
| 网络请求 | Retrofit2 + OkHttp |
| 图片加载 | Glide |
| 视频播放 | ExoPlayer (Media3) + IjkPlayer (FLV) |
| 实时通信 | WebSocket (弹幕/消息) |
| 数据存储 | SharedPreferences |
### 1.2 项目规模
| 统计项 | 数量 |
|--------|------|
| Activity | 40+ |
| 布局文件 | 95+ |
| API接口 | 60+ |
| 适配器 | 20+ |
| 工具类 | 15+ |
---
## 二、功能模块架构
### 2.1 底部导航结构 (5个主Tab)
```
┌─────────────────────────────────────────────────────────────┐
│ 直播平台APP │
├─────────┬─────────┬─────────┬─────────┬─────────────────────┤
│ 首页 │ 缘池 │ 许愿树 │ 消息 │ 我的 │
│ Home │FishPond │WishTree │Messages │ Profile │
└─────────┴─────────┴─────────┴─────────┴─────────────────────┘
```
---
## 三、详细功能模块分析
### 3.1 🏠 首页模块 (MainActivity)
#### 功能结构
```
首页
├── 顶部导航
│ ├── 侧边栏菜单 (汉堡按钮)
│ ├── 顶部标签页 (关注/发现/附近)
│ ├── 搜索框 (支持语音搜索)
│ └── 用户头像入口
├── 分类标签
│ └── 推荐/游戏/才艺/户外/音乐...
├── 直播间列表
│ └── 瀑布流布局 (StaggeredGridLayout)
└── 悬浮按钮
└── 创建直播间
```
#### 侧边栏功能清单
| 功能 | 说明 | 登录要求 |
|------|------|----------|
| 个人主页 | 查看/编辑个人资料 | ✅ 需要 |
| 消息 | 私信、互动通知 | ✅ 需要 |
| 我的好友 | 通讯录与挚友 | ✅ 需要 |
| 我的群组 | 群聊与群组管理 | ✅ 需要 |
| 缘池 | 附近与社交圈 | ✅ 需要 |
| 我的关注 | 关注的主播 | ✅ 需要 |
| 粉丝 | 关注你的人 | ✅ 需要 |
| 获赞 | 收到的点赞 | ✅ 需要 |
| 观看历史 | 最近看过的直播 | ✅ 需要 |
| 搜索 | 找主播/房间/标签 | ❌ 不需要 |
| 设置 | 账号、隐私、通知 | 部分需要 |
| 帮助与反馈 | 常见问题与建议 | ❌ 不需要 |
| 关于 | 版本信息与协议 | ❌ 不需要 |
#### 核心API接口
```java
// 直播间列表
GET /api/front/live/public/rooms
// 创建直播间
POST /api/front/live/rooms
// 搜索功能
GET /api/search?keyword={keyword}&type={type}
```
---
### 3.2 📺 直播间模块 (RoomDetailActivity)
#### 功能结构
```
直播间
├── 播放器区域
│ ├── ExoPlayer (HLS流)
│ ├── IjkPlayer (FLV流)
│ ├── 全屏切换
│ └── 离线状态显示
├── 房间信息
│ ├── 房间标题
│ ├── 主播名称
│ ├── 观看人数
│ ├── 直播状态标签
│ ├── 关注按钮
│ └── 分享按钮
├── 弹幕区域
│ ├── 弹幕列表 (RecyclerView)
│ ├── WebSocket实时弹幕
│ └── 弹幕输入框
└── 礼物系统
├── 礼物列表
├── 礼物发送
└── 金币余额
```
#### 技术特点
| 特性 | 实现方式 |
|------|----------|
| 视频播放 | ExoPlayer (HLS) + IjkPlayer (FLV) 双引擎 |
| 弹幕通信 | WebSocket 实时推送 |
| 心跳检测 | 30秒间隔心跳包 |
| 断线重连 | 最多5次重连递增延迟 |
| 横竖屏 | 支持全屏切换 |
#### 核心API接口
```java
// 获取房间详情
GET /api/front/live/public/rooms/{id}
// 获取观看人数
GET /api/front/live/public/rooms/{roomId}/viewers/count
// 获取弹幕消息
GET /api/front/live/public/rooms/{roomId}/messages
// 发送弹幕
POST /api/front/live/public/rooms/{roomId}/messages
// 关注主播
POST /api/front/live/follow
// WebSocket弹幕
ws://192.168.1.164:8081/ws/live/chat/{roomId}
```
---
### 3.3 🎁 礼物打赏模块
#### 功能结构
```
礼物系统
├── 礼物列表
│ ├── 礼物图标
│ ├── 礼物名称
│ └── 礼物价格 (金币)
├── 用户余额
│ ├── 金币余额
│ └── 充值入口
└── 充值系统
├── 充值选项列表
└── 支付接口
```
#### 核心API接口
```java
// 获取礼物列表
GET /api/front/gift/list
// 获取用户余额
GET /api/front/gift/balance
// 发送礼物
POST /api/front/gift/send
// 获取充值选项
GET /api/front/gift/recharge/options
// 创建充值订单
POST /api/front/gift/recharge/create
```
---
### 3.4 💬 消息模块 (MessagesActivity)
#### 功能结构
```
消息中心
├── 会话列表
│ ├── 用户头像
│ ├── 用户昵称
│ ├── 最后消息预览
│ ├── 时间戳
│ └── 未读数量徽章
├── 会话搜索
└── 私聊详情 (ConversationActivity)
├── 消息列表
│ ├── 文本消息
│ ├── 图片消息
│ └── 语音消息
├── 消息输入
└── 发送功能
```
#### 消息类型支持
| 类型 | 布局文件 | 说明 |
|------|----------|------|
| 文本消息 | item_conversation_message_*.xml | 支持收发 |
| 图片消息 | item_conversation_image_*.xml | 支持收发 |
| 语音消息 | item_conversation_voice_*.xml | 支持收发 |
#### 核心API接口
```java
// 获取会话列表
GET /api/front/conversations
// 搜索会话
GET /api/front/conversations/search?keyword={keyword}
// 获取/创建会话
POST /api/front/conversations/with/{otherUserId}
// 标记已读
POST /api/front/conversations/{id}/read
// 删除会话
DELETE /api/front/conversations/{id}
// 获取消息列表
GET /api/front/conversations/{id}/messages
// 发送消息
POST /api/front/conversations/{id}/messages
// 删除消息
DELETE /api/front/conversations/messages/{id}
```
---
### 3.5 👥 社交模块
#### 3.5.1 好友管理 (MyFriendsActivity)
```
好友管理
├── 好友列表
│ ├── 好友头像
│ ├── 好友昵称
│ ├── 在线状态
│ └── 操作按钮
├── 好友请求
│ ├── 请求列表
│ ├── 同意/拒绝
│ └── 请求详情
└── 添加好友 (AddFriendActivity)
├── 搜索用户
└── 发送请求
```
#### 3.5.2 群组管理 (GroupListActivity)
```
群组管理
├── 群组列表
│ ├── 群组头像
│ ├── 群组名称
│ ├── 成员数量
│ └── 最后消息
├── 创建群组 (CreateGroupActivity)
│ ├── 群组名称
│ ├── 群组头像
│ └── 选择成员
└── 群组详情 (GroupDetailActivity)
├── 群组信息
├── 成员列表
├── 添加成员
├── 移除成员
├── 转让群主
└── 解散/退出群组
```
#### 核心API接口
```java
// 好友管理
GET /api/front/friends
DELETE /api/front/friends/{friendId}
POST /api/front/friends/request
GET /api/front/friends/requests
POST /api/front/friends/requests/{requestId}/handle
// 群组管理
POST /api/front/groups/create
GET /api/front/groups/list
GET /api/front/groups/{groupId}
PUT /api/front/groups/{groupId}
DELETE /api/front/groups/{groupId}
POST /api/front/groups/{groupId}/members
DELETE /api/front/groups/{groupId}/members/{userId}
GET /api/front/groups/{groupId}/members
POST /api/front/groups/{groupId}/leave
POST /api/front/groups/{groupId}/transfer
```
---
### 3.6 🎣 缘池模块 (FishPondActivity)
#### 功能结构
```
缘池 (社交发现)
├── 轨道用户展示
│ ├── 6个用户头像环绕
│ ├── 轨道动画效果
│ └── 呼吸脉冲动画
├── 中心刷新按钮
├── 快捷功能入口
│ ├── 语音匹配 (VoiceMatchActivity)
│ └── 心动信号 (HeartbeatSignalActivity)
└── 功能卡片网格
├── 在线处对象 (OnlineDatingActivity)
├── 找人玩游戏 (FindGameActivity)
├── 一起KTV (KTVTogetherActivity)
├── 你画我猜 (DrawGuessActivity)
├── 和平精英 (PeaceEliteActivity)
└── 桌子游 (TableGamesActivity)
```
#### 设计特点
- 创新的轨道式用户展示
- 流畅的动画效果
- 多种社交玩法入口
---
### 3.7 🌳 许愿树模块 (WishTreeActivity)
#### 功能说明
许愿树是一个社交互动功能,用户可以发布愿望,其他用户可以帮助实现。
---
### 3.8 👤 个人中心模块 (ProfileActivity)
#### 功能结构
```
个人中心
├── 用户信息区
│ ├── 头像 (可点击查看大图)
│ ├── 昵称 (可编辑)
│ ├── 用户ID (可复制)
│ ├── 个人签名 (可编辑)
│ └── 标签 (性别/年龄/星座/地区)
├── 数据统计
│ ├── 关注数
│ ├── 粉丝数
│ └── 获赞数
├── 快捷入口
│ ├── 公园勋章
│ ├── 观看历史
│ └── 我的好友
├── 操作按钮
│ ├── 编辑资料
│ ├── 分享主页
│ └── 添加好友
└── 内容标签页
├── 作品 (UserWorksAdapter)
├── 收藏
└── 赞过
```
#### 编辑资料 (EditProfileActivity)
```
编辑资料
├── 头像修改
├── 昵称修改
├── 性别选择
├── 生日选择
├── 所在地选择
└── 个人签名
```
---
### 3.9 🔐 用户认证模块
#### 功能结构
```
用户认证
├── 登录 (LoginActivity)
│ ├── 账号密码登录
│ └── 验证码登录
├── 注册 (RegisterActivity)
│ ├── 手机号注册
│ ├── 验证码验证
│ └── 设置密码
└── 认证辅助 (AuthHelper)
├── 登录状态检查
└── 登录引导提示
```
#### 核心API接口
```java
// 登录
POST /api/front/login
// 注册
POST /api/front/register
// 发送验证码
POST /api/front/sendCode
// 登出
GET /api/front/logout
// 获取用户信息
GET /api/front/user
// 更新用户信息
POST /api/front/user/edit
```
---
### 3.10 📞 通话模块 (call/)
#### 功能结构
```
通话功能
├── 发起通话 (CallActivity)
│ ├── 语音通话
│ └── 视频通话
├── 来电接听 (IncomingCallActivity)
│ ├── 接听
│ └── 拒绝
├── 通话记录 (CallHistoryActivity)
│ └── 历史记录列表
└── 通话管理 (CallManager)
├── 信令处理
└── 状态管理
```
---
### 3.11 📝 作品发布模块 (PublishWorkActivity)
#### 功能结构
```
发布作品
├── 媒体选择
│ ├── 图片选择
│ └── 视频选择
├── 封面设置
├── 标题输入
├── 描述输入
└── 发布提交
```
---
### 3.12 🔍 搜索模块 (SearchActivity)
#### 功能结构
```
搜索功能
├── 搜索输入
│ ├── 文字输入
│ └── 语音输入
├── 搜索建议
├── 搜索结果
│ ├── 用户结果
│ └── 房间结果
└── 历史记录
```
---
### 3.13 ⚙️ 设置模块 (SettingsPageActivity)
#### 功能结构
```
设置
├── 账号设置
│ ├── 绑定手机
│ └── 修改密码
├── 隐私设置
├── 通知设置 (NotificationSettingsActivity)
├── 帮助与反馈
│ └── 反馈提交
└── 关于
├── 版本信息
└── 用户协议
```
---
## 四、UI组件清单
### 4.1 自定义View
| 组件 | 文件 | 说明 |
|------|------|------|
| EmptyStateView | EmptyStateView.java | 空状态展示 |
| AvatarViewerDialog | AvatarViewerDialog.java | 头像查看器 |
### 4.2 适配器列表
| 适配器 | 说明 |
|--------|------|
| RoomsAdapter | 直播间列表 |
| WaterfallRoomsAdapter | 瀑布流直播间 |
| ChatAdapter | 直播弹幕 |
| LiveChatAdapter | 直播聊天 |
| ConversationsAdapter | 会话列表 |
| ConversationMessagesAdapter | 私聊消息 |
| FriendsAdapter | 好友列表 |
| FriendRequestAdapter | 好友请求 |
| GroupsAdapter | 群组列表 |
| GroupMembersAdapter | 群成员列表 |
| GiftAdapter | 礼物列表 |
| RechargeAdapter | 充值选项 |
| UserWorksAdapter | 用户作品 |
| NotificationsAdapter | 通知列表 |
| NearbyUsersAdapter | 附近用户 |
| SearchUserAdapter | 搜索用户 |
| SearchSuggestionsAdapter | 搜索建议 |
| CommentAdapter | 评论列表 |
| BadgesAdapter | 徽章列表 |
| MoreAdapter | 更多选项 |
| DrawerCardsAdapter | 侧边栏卡片 |
---
## 五、数据模型清单
### 5.1 网络响应模型 (net/)
| 模型 | 说明 |
|------|------|
| ApiResponse<T> | 通用响应包装 |
| PageResponse<T> | 分页响应 |
| LoginResponse | 登录响应 |
| UserInfoResponse | 用户信息 |
| Room | 直播间信息 |
| StreamConfig | 流配置 |
| StreamUrls | 播放地址 |
| GiftResponse | 礼物信息 |
| SendGiftResponse | 发送礼物响应 |
| ConversationResponse | 会话信息 |
| PrivateMessageResponse | 私聊消息 |
| ChatMessageResponse | 弹幕消息 |
| FriendResponse | 好友信息 |
| FriendRequestResponse | 好友请求 |
| GroupResponse | 群组信息 |
| GroupMemberResponse | 群成员信息 |
| SearchUserResponse | 搜索用户 |
| RechargeOptionResponse | 充值选项 |
| FileUploadResponse | 文件上传响应 |
| UserBalanceResponse | 用户余额 |
### 5.2 请求模型 (net/)
| 模型 | 说明 |
|------|------|
| LoginRequest | 登录请求 |
| RegisterRequest | 注册请求 |
| CreateRoomRequest | 创建房间 |
| SendGiftRequest | 发送礼物 |
| SendMessageRequest | 发送消息 |
| CreateGroupRequest | 创建群组 |
| UpdateGroupRequest | 更新群组 |
| AddGroupMembersRequest | 添加成员 |
| TransferGroupRequest | 转让群主 |
| UserEditRequest | 编辑用户 |
| CreateRechargeRequest | 创建充值 |
### 5.3 UI模型
| 模型 | 说明 |
|------|------|
| ChatMessage | 弹幕消息 |
| ConversationItem | 会话项 |
| FriendItem | 好友项 |
| FriendRequestItem | 好友请求项 |
| GroupItem | 群组项 |
| GroupMemberItem | 群成员项 |
| Gift | 礼物 |
| RechargeOption | 充值选项 |
| WorkItem | 作品项 |
| NearbyUser | 附近用户 |
| NotificationItem | 通知项 |
| CommentItem | 评论项 |
| BadgeItem | 徽章项 |
| DrawerCardItem | 侧边栏项 |
| MoreItem | 更多选项项 |
| SearchUserItem | 搜索用户项 |
---
## 六、工具类清单
| 工具类 | 说明 |
|--------|------|
| ApiClient | API客户端单例 |
| AuthStore | 认证信息存储 |
| AuthHelper | 登录状态检查 |
| CacheManager | 缓存管理 |
| NetworkUtils | 网络工具 |
| NetworkRequestManager | 网络请求管理 |
| ErrorHandler | 错误处理 |
| ShareUtils | 分享工具 |
| LocationDataManager | 位置数据管理 |
| CategoryFilterManager | 分类筛选管理 |
| LoadingStateManager | 加载状态管理 |
| UnreadMessageManager | 未读消息管理 |
| LocalNotificationManager | 本地通知管理 |
| MessagePreviewHelper | 消息预览辅助 |
| MessageSendHelper | 消息发送辅助 |
| WorkManager | 作品管理 |
| DebounceClickListener | 防抖点击监听 |
| LiveChatClient | 直播弹幕客户端 |
---
## 七、功能完成度评估
### 7.1 已完成功能 ✅
| 模块 | 完成度 | 说明 |
|------|--------|------|
| 首页框架 | 95% | UI完整待接口对接 |
| 直播间播放 | 90% | 双引擎播放WebSocket弹幕 |
| 用户认证 | 85% | 登录注册流程完整 |
| 个人中心 | 90% | 资料编辑完整 |
| 消息系统 | 85% | 会话列表、私聊完整 |
| 好友管理 | 90% | 好友列表、请求处理完整 |
| 群组管理 | 95% | 10个API全部实现 |
| 礼物系统 | 80% | 礼物列表、发送完整 |
| 缘池社交 | 85% | 轨道动画、功能入口完整 |
| 搜索功能 | 80% | 搜索框、语音搜索完整 |
### 7.2 待完善功能 ⏳
| 模块 | 完成度 | 待完成项 |
|------|--------|----------|
| 后端接口对接 | 60% | 大部分接口待对接 |
| 支付充值 | 40% | 支付SDK集成 |
| 推送通知 | 30% | 推送服务集成 |
| 通话功能 | 50% | WebRTC集成 |
| 作品发布 | 60% | 上传接口对接 |
| 许愿树 | 50% | 功能逻辑完善 |
---
## 八、设计亮点
### 8.1 用户体验
1. **游客模式**:用户无需登录即可浏览直播,仅在需要互动时提示登录
2. **防抖处理**:所有按钮点击都有防抖保护,避免重复操作
3. **缓存优先**:首页优先显示缓存数据,提升启动速度
4. **语音搜索**:支持语音输入搜索,提升搜索体验
### 8.2 技术实现
1. **双播放引擎**ExoPlayer + IjkPlayer支持HLS和FLV流
2. **WebSocket弹幕**:实时弹幕推送,心跳检测,断线重连
3. **瀑布流布局**StaggeredGridLayout实现直播间瀑布流
4. **轨道动画**:缘池页面创新的轨道式用户展示
### 8.3 架构设计
1. **ViewBinding**:类型安全的视图绑定
2. **单例API客户端**:统一的网络请求管理
3. **认证辅助类**:统一的登录状态检查
4. **错误处理**:统一的错误处理机制
---
## 九、优化建议
### 9.1 架构优化
1. 引入MVVM架构使用ViewModel + LiveData
2. 使用Room数据库替代SharedPreferences存储复杂数据
3. 引入依赖注入框架Hilt/Dagger
### 9.2 性能优化
1. 图片加载优化:预加载、内存缓存策略
2. 列表优化DiffUtil、预加载
3. 内存优化:及时释放资源,避免内存泄漏
### 9.3 功能完善
1. 完成所有后端接口对接
2. 集成支付SDK微信/支付宝)
3. 集成推送服务(极光/个推)
4. 完善通话功能WebRTC
---
## 十、总结
Android移动端是一个功能完整的直播社交平台包含直播观看、社交互动、消息通信、个人中心等核心模块。UI设计现代化采用Material Design 3风格用户体验流畅。
**核心优势:**
- 完整的直播观看体验(双引擎播放)
- 丰富的社交功能(好友、群组、缘池)
- 实时通信能力WebSocket弹幕
- 良好的用户体验设计
**主要待完成:**
- 后端接口全面对接
- 支付功能集成
- 推送服务集成
- 通话功能完善
---
> 报告完成
>
> 建议按照功能优先级逐步完成后端接口对接