# record-app **Repository Path**: agstar/record-app ## Basic Information - **Project Name**: record-app - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-01 - **Last Updated**: 2026-02-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Record App 一个基于 Android 平台的屏幕录制与投射应用,支持本地录制、外部显示投射(HDMI/Miracast)以及 WebRTC 局域网实时流传输。 ## 功能特性 ### Phase 0: 录屏 MVP - 使用 `MediaProjection API` 实现屏幕录制 - 前台服务(Foreground Service)保证后台录制稳定性 - 支持录制状态实时反馈 - 输出 MP4 格式视频文件 ### Phase 1: HDMI / 外接显示投影 - 自动检测外部显示设备(HDMI、Miracast 等) - 支持将屏幕内容投射到外部显示器 - 独立的 Presentation 界面展示 - 投射状态实时监控 ### Phase 2: WebRTC 实时流传输 - 基于 WebRTC 的实时视频流传输 - 局域网优先的连接策略 - 信令服务器支持多房间管理 - 低延迟的实时投屏体验 ## 技术架构 ``` ┌─────────────────────────────────────────────────────────┐ │ UI Layer │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │ │ │MainActivity │ │ Theme │ │ ExternalDisplay │ │ │ └─────────────┘ └─────────────┘ └─────────────────┘ │ ├─────────────────────────────────────────────────────────┤ │ Service Layer │ │ ┌─────────────────────┐ ┌─────────────────────────┐ │ │ │ ScreenCaptureService│ │ WebRtcCaptureService │ │ │ └─────────────────────┘ └─────────────────────────┘ │ ├─────────────────────────────────────────────────────────┤ │ Core Layer │ │ ┌───────────────────────────────────────────────────┐ │ │ │ ScreenCaptureCore │ │ │ │ ┌─────────┐ ┌──────────┐ ┌────────────────────┐ │ │ │ │ │MediaProj│ │MediaCodec│ │ MediaMuxer │ │ │ │ │ └─────────┘ └──────────┘ └────────────────────┘ │ │ │ └───────────────────────────────────────────────────┘ │ │ ┌───────────────────────────────────────────────────┐ │ │ │ WebRtcStreamer │ │ │ │ ┌─────────┐ ┌──────────┐ ┌────────────────────┐ │ │ │ │ │PeerConn │ │VideoSource│ │ WebSocket │ │ │ │ │ └─────────┘ └──────────┘ └────────────────────┘ │ │ │ └───────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────┤ │ State Management │ │ ┌─────────────┐ ┌─────────────────┐ ┌─────────────┐ │ │ │CaptureState │ │ExternalDispState│ │ WebRtcState│ │ │ └─────────────┘ └─────────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────┘ ``` ## 项目结构 ``` app/src/main/java/com/example/myapplication/ ├── MainActivity.kt # 主界面入口 ├── capture/ │ ├── CaptureState.kt # 录制状态管理 │ ├── ScreenCaptureCore.kt # 核心录制逻辑 │ └── ScreenCaptureService.kt # 录制前台服务 ├── display/ │ ├── ExternalDisplayController.kt # 外部显示控制 │ ├── ExternalDisplayState.kt # 显示状态管理 │ └── ExternalPresentation.kt # 外部显示演示 ├── webrtc/ │ ├── WebRtcCaptureService.kt # WebRTC 服务 │ ├── WebRtcState.kt # WebRTC 状态管理 │ └── WebRtcStreamer.kt # WebRTC 流传输 └── ui/theme/ # Compose 主题组件 signaling/ └── server.js # WebRTC 信令服务器 web-receiver/ └── index.html # WebRTC 接收端页面 ``` ## 环境要求 - **Android Studio**: 2023.0 或更高版本 - **Gradle**: 8.0+ - **Kotlin**: 1.9+ - **Android SDK**: 26 (Android 8.0) 或更高版本 - **目标 SDK**: 34 (Android 14) - **最低 SDK**: 26 (Android 8.0) ## 快速开始 ### 1. 克隆项目 ```bash git clone https://gitee.com/agstar/record-app.git cd record-app ``` ### 2. 配置开发环境 确保已安装 Android Studio 并配置好 Android SDK。推荐使用 AGP 8.x 版本对应的 Gradle。 ### 3. 构建项目 ```bash ./gradlew assembleDebug ``` ### 4. 运行测试 ```bash ./gradlew test # 单元测试 ./gradlew connectedTest # Instrumentation 测试 ``` ## 使用说明 ### 录制屏幕 1. 打开应用后点击录制按钮 2. 授权屏幕录制权限 3. 选择输出位置后开始录制 4. 录制过程中可查看实时状态 5. 再次点击停止录制 ### 外部显示投射 1. 连接外部显示设备(HDMI 线缆或 Miracast 接收器) 2. 在应用中选择"投射到外部显示" 3. 选择目标显示设备后开始投射 4. 可在外部显示器上看到同步内容 ### WebRTC 实时流传输 1. 确保手机与接收端在同一局域网 2. 在接收端打开 `web-receiver/index.html` 3. 输入房间 ID 后进入等待 4. 在手机上选择房间并开始推流 5. 接收端将实时显示手机屏幕内容 ## 信令服务器部署 WebRTC 功能需要部署信令服务器: ```bash cd signaling npm install node server.js ``` 默认端口号可在 `signaling/server.js` 中配置。 ## 权限说明 应用需要以下系统权限: | 权限 | 用途 | |------|------| | `android.permission.FOREGROUND_SERVICE` | 前台服务运行 | | `android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION` | 媒体投影录制 | | `android.permission.POST_NOTIFICATIONS` | 显示通知 | | `android.permission.INTERNET` | 网络通信(WebRTC) | | `android.permission.RECORD_AUDIO` | 音频录制(可选) | ## 贡献指南 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交改动 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 发起 Pull Request ## 版本历史 - **v1.0.0** - 初始版本,支持 Phase 0 基础录制功能 ## 许可证 本项目采用 MIT License,详情请参阅 [LICENSE](LICENSE) 文件。 ## 联系方式 - 项目主页:https://gitee.com/agstar/record-app - 问题反馈:https://gitee.com/agstar/record-app/issues