# app **Repository Path**: qs0010/app ## Basic Information - **Project Name**: app - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-26 - **Last Updated**: 2026-04-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 远程控制系统 一个基于Android设备、Windows/macOS/Linux服务端的远程控制系统,支持通过Web浏览器实时查看和控制Android设备屏幕。 ## 项目结构 ``` app/ ├── server/ # Go服务端(WebSocket服务器、STUN服务器) ├── android/ # Android被控端应用 └── web-console/ # Vue3网页控制端 ``` ## 功能特性 - 实时屏幕采集与传输 - Web端远程控制Android设备 - 支持点击、滑动、Home、返回等基本操作 - 支持音量调节、电源控制 - 设备列表管理 - 多个设备同时连接支持 - Web端实时显示设备屏幕 ## 系统要求 ### 服务端 - 操作系统:Linux / macOS / Windows - Go 1.21+ - Redis 6.0+ ### Android被控端 - Android 8.0+ (API 26+) - 需要授权以下权限: - 屏幕录制权限 - 无障碍服务权限 ### Web控制端 - 现代浏览器(Chrome、Firefox、Edge、Safari) - 支持WebSocket ## 编译环境安装 ### 1. 服务端编译环境 #### Linux (Ubuntu/Debian) ```bash # 安装Go sudo apt update sudo apt install -y wget wget https://go.dev/dl/go1.21.6.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.21.6.linux-amd64.tar.gz echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc source ~/.bashrc # 安装Redis sudo apt install -y redis-server # 验证安装 go version redis-server --version ``` #### macOS ```bash # 安装Homebrew(如果未安装) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # 安装Go和Redis brew install go redis # 验证安装 go version redis-server --version ``` #### Windows 1. 下载Go安装包:https://go.dev/dl/go1.21.6.windows-amd64.msi 2. 双击运行安装包,按照提示完成安装 3. 下载Redis:https://github.com/microsoftarchive/redis/releases 4. 解压到指定目录 ### 2. Android被控端编译环境 #### 安装Android Studio 1. 下载Android Studio:https://developer.android.com/studio 2. 安装Android Studio 3. 启动Android Studio,安装必要的SDK组件 #### 命令行编译(可选) ```bash # Linux/macOS export ANDROID_HOME=$HOME/Android/Sdk export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools # Windows set ANDROID_HOME=C:\Users\<用户名>\AppData\Local\Android\Sdk set PATH=%PATH%;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools ``` ### 3. Web控制端编译环境 #### 安装Node.js ```bash # Linux/macOS # 使用NodeSource安装Node.js 18 curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install -y nodejs # macOS brew install node@18 # Windows # 下载Node.js 18 LTS: https://nodejs.org/ ``` #### 安装pnpm(推荐)或npm ```bash # 全局安装pnpm npm install -g pnpm # 或使用npm npm install -g npm ``` ## 编译指南 ### 1. 编译服务端 ```bash # 进入服务端目录 cd app/server # 下载依赖 go mod download # 编译 go build -o remote-control-server ./cmd/server # 编译成功后会生成 remote-control-server 可执行文件 ``` ### 2. 编译Android被控端 #### 使用Android Studio 1. 打开Android Studio 2. 选择 File -> Open 3. 选择 `app/android` 文件夹 4. 等待Gradle同步完成 5. 选择 Build -> Build Bundle(s) / APK(s) -> Build APK(s) #### 使用命令行 ```bash # 进入Android目录 cd app/android # 编译Debug版本 ./gradlew assembleDebug # 编译Release版本(需要签名配置) ./gradlew assembleRelease # 编译产物位于 # app/build/outputs/apk/debug/app-debug.apk # app/build/outputs/apk/release/app-release.apk ``` ### 3. 编译Web控制端 ```bash # 进入Web控制端目录 cd app/web-console # 安装依赖 pnpm install # 或 npm install # 开发模式运行 pnpm dev # 或 npm run dev # 生产环境构建 pnpm build # 或 npm run build # 编译产物位于 # dist/ ``` ## 启动指南 ### 1. 启动Redis服务 ```bash # Linux/macOS redis-server --daemonize yes # Windows redis-server.exe ``` ### 2. 启动服务端 ```bash # 进入服务端目录 cd app/server # 启动服务(前台运行) ./remote-control-server # 或后台运行 nohup ./remote-control-server > server.log 2>&1 & # 服务默认端口 # - WebSocket服务:8080 # - STUN服务:3478 ``` ### 3. 启动Web控制端 ```bash # 进入Web控制端目录 cd app/web-console # 开发模式 pnpm dev # 或 npm run dev # Web控制端默认访问地址 # http://localhost:8081 ``` ### 4. 安装Android被控端 1. 将编译生成的 `app-debug.apk` 传输到Android设备 2. 在Android设备上安装APK 3. 打开应用,授权必要权限 ## 使用指南 ### 1. Android被控端配置 1. 打开"远程控制"应用 2. 点击"启动屏幕采集服务",在弹出的权限对话框中点击"允许" 3. 点击"启用无障碍服务",在设置页面中找到"远程控制"服务并开启 4. 点击"连接服务器",输入服务器IP地址(默认:192.168.1.80) 5. 确认设备已连接(状态会显示"设备已连接") ### 2. Web控制端使用 1. 在浏览器中打开 http://服务器IP:8081/ 2. 使用默认账号登录(admin / admin) 3. 在设备列表中查看已连接的设备 4. 点击设备卡片进入远程控制页面 5. 在远程控制页面可以: - 实时查看设备屏幕 - 点击屏幕进行控制 - 使用控制面板按钮(Home、返回、最近任务、音量、电源等) - 输入文本 ## 配置说明 ### 服务端配置 服务端配置文件位于 `server/config.yaml`: ```yaml server: host: "0.0.0.0" port: 8080 stun: host: "0.0.0.0" port: 3478 redis: host: "localhost" port: 6379 ``` ### Android被控端配置 在 `MainActivity.kt` 中修改默认服务器地址: ```kotlin val savedServerIp = sharedPreferences.getString(KEY_SERVER_IP, "192.168.1.80") ``` ### Web控制端配置 在 `web-console/src/stores/devices.ts` 中修改API地址: ```typescript const API_BASE_URL = 'http://192.168.1.80:8080/api' ``` ## 常见问题 ### 1. Android设备无法连接服务器 - 检查服务器IP地址是否正确 - 检查防火墙是否开放了8080端口 - 检查设备与服务器是否在同一网络 ### 2. 屏幕采集服务启动失败 - 确保已授权屏幕录制权限 - 确保已授权悬浮窗权限(部分设备需要) ### 3. 点击屏幕无反应 - 确保无障碍服务已启用 - 重启应用和手机尝试 ### 4. 视频画面黑屏 - 检查屏幕采集服务是否正常运行 - 重启屏幕采集服务 ### 5. 设备离线后仍显示在线 - 服务端会自动检测设备心跳超时(60秒) - 超时后设备会自动从列表中移除 ## 技术架构 ### 数据流 ``` [Android设备] --WebSocket--> [Go服务端] --WebSocket--> [Web浏览器] | | v v [屏幕截图] [设备列表] [JPEG编码] [控制命令] [Base64编码] [视频流] ``` ### 服务端架构 - **WebSocketHandler**:处理WebSocket连接和消息转发 - **P2PHandler**:处理P2P连接(STUN服务器) - **Redis**:存储设备信息和状态 ### Android被控端架构 - **ScreenCaptureService**:屏幕采集服务,使用ImageReader捕获屏幕 - **DeviceConnectionService**:WebSocket客户端,负责与服务端通信 - **RemoteAccessibilityService**:无障碍服务,负责执行控制命令 ### Web控制端架构 - **Vue 3**:前端框架 - **Pinia**:状态管理 - **WebSocket**:实时通信 ## 许可证 MIT License ## 联系方式 如有问题,请提交Issue。