zhibo/android-app/移动端功能设计分析报告.md

722 lines
18 KiB
Markdown
Raw Permalink Normal View History

2025-12-30 16:22:27 +08:00
# 直播平台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弹幕
- 良好的用户体验设计
**主要待完成:**
- 后端接口全面对接
- 支付功能集成
- 推送服务集成
- 通话功能完善
---
> 报告完成
>
> 建议按照功能优先级逐步完成后端接口对接