# 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/
在此基础上做了新的调整
[更新日志](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 调试
## 界面预览
主界面

## 常见问题解决
### 调试启动失败
请按照以下步骤在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 设备或进行自动化操作的场景使用。通过其丰富的功能模块和灵活的扩展性,可以满足从简单设备控制到复杂自动化任务的各种需求。