【WinForm】Android手机群控工具-桌面程序开发实现

如何将手下多个Android手机统一管理起来呢,这里是用通过终端输入adb命令来实现控制多个手机的,具体怎么做,接下来给讲一讲。

adb工具

首先,需要准备一套工具,以下是adb工具套件,是在Android SDK开发包中复制出来的
【WinForm】Android手机群控工具-桌面程序开发实现_第1张图片

注意,三个缺一不可,dll是adb依赖的文件
没有的话,可以点此前往网上搜adb工具包

打开手机的设置→开发者选项,开启USB调试功能,然后通过数据线连接上电脑

连接电脑会弹出连接提示的,没有提示的话,你的数据线可能是仅充电用的,
手机上没有找到开发者选项,尝试点此前往可找到解决方案,
个别手机可能需要选择文件传输,才能进入USB调试

连接成功的话,如下图所示,手机通知栏显示“已连接USB调试”那就是正常的
在这里插入图片描述

命令控制

接下来,在电脑上当前存放adb.exe的文件夹根目录下,点鼠标右键,

再点击Open in Windows Terminal打开终端,如下图所示,试试输入命令
【WinForm】Android手机群控工具-桌面程序开发实现_第2张图片

Windows 11 系统 CMD窗口 输入的命令如 ./adb devices…,相比旧版系统,新版的前面需要加./才行,
列表出现的如 “设备序列号 device” 是表示可连接的,
若为其它如有offline的话,表示还不能连接,可能要先在手机上的弹窗点允许调试

这里列出一下,常用到的adb命令

命令 说明
adb devices 显示可连接的USB设备列表
adb shell wm size 获取屏幕分辨率
adb shell mkdir /sdcard/文件夹 在手机内部存储中创建一个文件夹
adb shell screencap -p /sdcard/文件夹/文件名 屏幕截图,生成png图片存到指定位置
adb pull 手机存储文件位置 电脑的文件夹位置 导出文件,把手机的文件导出到电脑上
adb shell rm -r 手机存储文件位置 删除手机的文件
adb shell input tap 10 20 模拟点击屏幕位置在坐标 (10,20)
adb shell input keyevent 4 模拟点击按键返回,举例:
4返回;3主页;82菜单;24音量+;25音量-;26电源;
adb shell input swipe 10 10 10 100 600 模拟滑动,其中5个数字分别表示:
开始点坐标X1和Y1,结束点坐标X2和Y2,还有一个是滑动时间ms单位
adb start-server 启动adb服务
adb kill-server 关闭adb服务
adb install -r test.apk 安装(覆盖)test.apk应用
adb uninstall test.apk 卸载test.apk应用
adb … 还有更多…

在终端输入以上命令试试,熟能生巧,就能记下来

如果只想精确控制其中的一个设备,就需要在adb 后面加一段命令-s <设备序列号>

例如这样,获取序列号为AB42342425255 的设备的屏幕分辨率

adb -s AB42342425255 shell wm size

程序控制

操作输入命令多了是多不方便,

如果你会用Visual Studio开发工具编写一个WinForm项目,就可以开发一个桌面程序来,运行效果如下图这样,
【WinForm】Android手机群控工具-桌面程序开发实现_第3张图片

简单操作一下,就能控制连接的手机,可在屏幕点击和滑动操作,
如果手里还有多余的闲置Android手机或平板电脑,都可以通过它来控制

桌面程序是使用C#编程语言编写的,通过Process对象调用外部adb.exe程序来实现,主要的调用代码如下

//创建一个调用外部adb的进程
var p = new Process();
p.StartInfo.FileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "adb.exe");
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
//执行adb命令
adbProcess.StartInfo.Arguments = common;
adbProcess.Start();
var result = adbProcess.StandardOutput.ReadToEnd();
if (string.IsNullOrEmpty(result))
{
    result = adbProcess.StandardError.ReadToEnd();
}
adbProcess.WaitForExit();

其中common是传入的命令,如"devices",
其中result是输出命令,可以看到执行后返回的结果,

像通过终端命令的操作一样,就是把常用的命令操作的方法一起封装好,

自己写到桌面程序里,这样用起来就会轻松一些。

注意不用时,已开启的USB调试,最好关闭,以防手机数据被盗或丢失。

关于桌面程序具体实现的可以看下项目源码,点击这里 ,在资源一栏下可找到(可能在手机上看不到,就用电脑浏览器试试)
【WinForm】Android手机群控工具-桌面程序开发实现_第4张图片

你可能感兴趣的:(WinForm,android,智能手机,adb,群控,WinForm)