# MobileControlGuru **Repository Path**: hennychen/MobileControlGuru ## Basic Information - **Project Name**: MobileControlGuru - **Description**: 电脑控制手机设备的程序,支持多控,支持快捷键,WebAPI控制,定时任务 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-24 - **Last Updated**: 2025-09-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MobileControlGuru 项目功能说明文档 ## 项目概述 **MobileControlGuru** 是一个功能强大的 Android 设备多控管理工具,基于 C# WinForms 开发。该项目支持通过 ADB 控制多个 Android 设备,提供全局快捷键操作、Web API 接口、自动化任务执行和 scrcpy 投屏等功能。 **源作者**: https://github.com/yclown/MobileControlGuru/ 在此基础上做了新的调整

简体中文 | English

[更新日志](https://github.com/yclown/MobileControlGuru/blob/master/Docs/Update.md) ## 核心功能特性 ### 1. 多设备管理与控制 - **设备连接**:支持 USB 和 WiFi(TCP/IP)连接方式 - **多设备同时控制**:可同时管理和控制多个 Android 设备 - **设备状态监控**:实时显示设备连接状态和在线情况 - **批量操作**:支持对选中的多个设备执行批量命令 ### 2. 全局快捷键系统 提供丰富的全局快捷键,默认操作第一个设备: | 快捷键 | 功能 | 说明 | |--------|------|------| | Alt+D | 锁屏 | 发送设备锁屏指令 | | Alt+H | Home键 | 返回主屏幕 | | Alt+C | 点击屏幕 | 在预设坐标点击(主界面按钮点击后生效) | | Alt+↑ | 音量加 | 增加设备音量 | | Alt+↓ | 音量减 | 减少设备音量 | | Alt+← | 媒体上一个 | 播放上一首/上一个媒体 | | Alt+→ | 媒体下一个 | 播放下一首/下一个媒体 | | Alt+5(小键盘) | 播放暂停 | 媒体播放/暂停 | | Alt+2(小键盘) | 上滑 | 对应短视频下一个 | | Alt+8(小键盘) | 下滑 | 对应短视频上一个 | ### 3. Web API 接口 提供 RESTful API 接口,默认端口 12345,支持远程控制。 **注意**:此功能用于非本机控制设备,需要谨慎开启。开始后局域网设备可以通过API形式调用本机的控制指令。 此功能搭配[Curl](https://curl.se/download.html)与[AutoHotkey](https://www.autohotkey.com/)配合使用,当多设备时可以让各自的电脑操作自己的手机。 #### API 端点列表 | 端点 | 方法 | 功能 | 参数说明 | |------|------|------|----------| | `/api/Device/Connect` | GET | 连接设备(第一步) | devicename (设备名/IP) | | `/api/Device/List` | GET | 获取当前设备列表 | 无 | | `/api/Device/CheckOnline` | GET | 检查设备在线状态 | devicename | | `/api/Device/Lock` | GET | 发送锁屏指令 | 无 | | `/api/Device/SendKey` | GET | 发送按键指令 | keyCode数值请自行搜索关键词(adb keycode) | | `/api/Device/SendSwipe` | GET | 发送滑动指令 | 坐标参数 | ### 4. 自动化任务系统 基于 Quartz.NET 框架实现的强大任务调度系统: #### 任务类型 - **定时任务**:基于 Cron 表达式的周期性任务 - **时间范围任务**:指定开始和结束时间的任务 - **一次性任务**:立即执行的单次任务 #### 支持的操作类型 - 点击操作(shell input tap) - 滑动操作(shell input swipe) - 按键操作(shell input keyevent) - 文本输入(shell input text) - 中文输入(shell am broadcast) - 剪贴板操作 - 应用启动/关闭 - 文件操作(push/pull) - 截屏操作 - 自定义 ADB 命令 #### 任务管理功能 - 任务创建、编辑、删除 - 批量任务执行 - 任务执行状态跟踪 - 任务日志记录 - 设备任务分配调度 ### 5. scrcpy 投屏功能 集成 scrcpy 实现设备投屏: - **实时投屏**:高质量、低延迟的屏幕镜像 - **投屏控制**:支持通过投屏窗口直接操作设备 - **多种键盘模式**:支持 SDK、UHID、AOA 等模式 - **参数配置**:可自定义投屏质量、帧率等参数 ### 6. 数据存储系统 - **SQLite 数据库**:存储任务信息和配置数据 - **JSON 配置**:灵活的配置文件管理 - **任务持久化**:任务信息自动保存和恢复 ## 使用指南 ### 基本使用流程 1. **启动应用**:运行 MobileControlGuru.exe 2. **开启调试**:在 Android 设备上开启 USB 调试模式并授权调试 3. **连接设备**: - USB 连接:直接连接后点击"获取设备列表" - WiFi 连接:使用 IP 连接功能 4. **设备控制**:左边列表出现设备信息,即可开始控制手机(无需投屏) ### 高级功能使用 #### 创建自动化任务 1. 点击"任务管理"按钮 2. 创建新任务,设置任务名称 3. 添加操作步骤(点击、滑动、按键等) 4. 配置执行时间(Cron 表达式或时间范围) 5. 选择目标设备 6. 启动任务 #### 使用 Web API 1. 在设置中开启 API 服务 2. 配置端口号(默认 12345,可在config文件修改WebPort属性) 3. 通过 HTTP 请求调用 API 接口 4. 可配合 cURL、AutoHotkey 等工具使用 #### 配置全局快捷键 1. 点击设置 → 快捷键设置 2. 选择要修改的快捷键 3. 设置修饰键(Alt、Ctrl 等) 4. 设置功能键 5. 保存配置 ## 技术架构 ### 核心组件 #### 1. 设备管理(DeviceManager) - 负责设备发现、连接和状态管理 - 提供统一的设备操作接口 - 支持设备事件通知机制 #### 2. ADB 操作封装(ADB.cs) - 封装所有 ADB 命令操作 - 提供异步和同步执行方式 - 统一的错误处理和日志记录 #### 3. 任务调度系统(TaskManager) - 基于 Quartz.NET 的任务调度 - 支持 Cron 表达式和时间范围调度 - 多线程任务执行和状态管理 #### 4. Web API 服务(WebHelper) - 基于 OWIN 的轻量级 Web 服务 - RESTful API 设计 - 支持 Swagger API 文档 #### 5. 全局热键系统(MyHotKey) - Windows API 集成的全局热键 - 可配置的快捷键映射 - 热键冲突检测和处理 ### 项目结构 ``` MobileControlGuru/ ├── AutoTask/ # 自动化任务模块 ├── Base/ # 基础组件(ADB、scrcpy等) ├── Model/ # 数据模型 ├── Src/ # 核心业务逻辑 ├── Tools/ # 工具类 ├── WebAPI/ # Web API 接口 ├── sqlite_db/ # 数据库相关 └── Resources/ # 资源文件 ``` ## 注意事项 - 直接关闭不会退出本程序,请右击右下角图标退出本程序 - 快捷键默认只操作第一个设备 - API 功能需要谨慎开启,建议仅在可信网络环境中使用 ## 系统要求 - **操作系统**:Windows 7/8/10/11 - **.NET Framework**:4.7.2 或更高版本 - **ADB**:集成在项目中,无需单独安装 - **设备要求**:Android 5.0+ 设备,开启 USB 调试 ## 界面预览 主界面 ![输入图片说明](image.png) ## 常见问题解决 ### 调试启动失败 请按照以下步骤在Visual Studio中操作: 🔧 **在Visual Studio中的操作步骤**: 1. 关闭Visual Studio 2. 重新打开Visual Studio 3. 打开解决方案:选择 文件 → 打开 → 项目/解决方案 → 选择 MobileControlGuru.sln 4. 设置启动项目:在解决方案资源管理器中,右键点击 MobileControlGuru 项目(不是解决方案),选择 "设为启动项目" 5. 清理并重新生成:菜单 → 生成 → 清理解决方案,然后 → 生成 → 重新生成解决方案 6. 现在按F5开始调试 📋 **如果还是不行,请尝试**: 直接双击运行 debug_startup.bat 文件来自动构建和启动程序 ## 项目计划 511308538@qq.com ### scrcpy投屏无法控制手机的原因及解决方法 #### 问题原因分析 **1. 键盘输入模式配置问题** - 默认的键盘输入模式可能与您的设备不兼容 - UHID模式在某些Android版本或设备上可能不被支持 - 输入法设置可能阻止了外部输入 **2. USB调试权限问题** - USB调试权限未正确授予 - 设备的开发者选项中"USB调试(安全设置)"未开启 - 某些设备需要额外开启"USB安装"或"USB验证应用"权限 **3. Android版本兼容性问题** - Android 11及以上版本对输入控制有更严格的限制 - 某些厂商的ROM(如MIUI、ColorOS等)有额外的安全限制 #### 解决方法 **方法1:调整键盘输入模式** - 在应用中设置:打开scrcpy设置界面,找到"键盘支持"或"KeyboardUhid"选项 - 尝试不同的输入模式:如果当前是UHID模式,改为SDK模式;如果当前是SDK模式,尝试UHID或AOA模式 **方法2:检查设备权限设置** ``` 设置 → 开发者选项 → 确保以下选项已开启: - USB调试 ✓ - USB安装 ✓ - USB调试(安全设置) ✓ - 禁用权限监控 ✓ (如果有) ``` **方法3:重新授权ADB连接** 1. 拔掉USB重新连接 2. 手机上会弹出授权对话框,勾选"始终允许这台计算机" 3. 点击确定 **方法4:针对特定品牌的解决方案** - **小米/MIUI**:开启"USB调试(安全设置)",关闭"MIUI优化",开启"无线调试" - **华为/荣耀**:开启"'仅充电'模式下允许ADB调试",关闭"纯净模式" - **OPPO/一加**:开启"禁用权限监控",开启"USB调试(安全设置)" **推荐的排查顺序:** 1. 首先尝试关闭UHID键盘模式,使用默认SDK模式 2. 检查设备的开发者选项设置 3. 重新授权ADB连接 4. 尝试不同的键盘输入模式 5. 如果仍然不行,考虑设备特定的兼容性问题 大多数情况下,调整键盘输入模式就能解决投屏无法控制的问题。 ### 设备连接问题 1. 确认 ADB 驱动安装正确 2. 检查 USB 调试授权 3. 尝试重新连接设备 4. 查看日志文件排查问题 ## 开发扩展 项目采用模块化设计,支持功能扩展: 1. **添加新的操作类型**:在 TaskJson.OpTypes 中定义 2. **扩展 API 接口**:在 Controllers 目录下添加新控制器 3. **自定义快捷键**:修改 MyHotKey 类中的事件定义 4. **添加新设备支持**:扩展 DeviceManager 类 ## 许可证 本项目基于原作者 [yclown](https://github.com/yclown/MobileControlGuru/) 的开源项目进行改进和扩展。 --- 这是一个功能完整、架构清晰的 Android 设备管理工具,适合需要批量管理 Android 设备或进行自动化操作的场景使用。通过其丰富的功能模块和灵活的扩展性,可以满足从简单设备控制到复杂自动化任务的各种需求。