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

news2024/9/22 19:26:55

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

使用adb工具包

首先,需要准备一套工具,以下是adb工具套件,是在Android SDK开发包中复制出来的
在这里插入图片描述

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

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

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

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

从终端输入命令控制手机

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

再点击Open in Windows Terminal打开终端,如下图所示,试试输入命令
在这里插入图片描述

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

从桌面程序操作控制手机

操作太麻烦,不想输入命令,

那就开发一个桌面程序来,如下效果图,
在这里插入图片描述

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

这个桌面程序是用Visual Studio开发工具编写而成的,是一个WinForm项目,

项目中是通过Process对象调用外部adb.exe程序来实现的,使用C#编程语言,

主要的调用代码如下

//创建一个调用外部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调试,最好关闭,以防手机数据被盗或丢失。

关于项目源码,在资源一栏下可找到,【资源下载点击这里】
请添加图片描述

就讲到这,感谢支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/453052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lanuage-driven semantic segmentation

CLIP 改进工作串讲&#xff08;上&#xff09;【论文精读42】_哔哩哔哩_bilibili更多论文&#xff1a;https://github.com/mli/paper-reading, 视频播放量 64310、弹幕量 274、点赞数 1939、投硬币枚数 1332、收藏人数 821、转发人数 438, 视频作者 跟李沐学AI, 作者简介 &…

window安装cplex20.1.0启动报错: ilog.odms.ide.opllang.IloOplLangPlugin

通过0-1背包问题看穷举法、贪心算法、启发式算法&#xff08;JAVA) 模拟退火(SA)算法实例介绍&#xff08;JAVA) 遗传算法&#xff08;GA&#xff09;实例介绍&#xff08;JAVA) CPLEX求解器入门案例 java集成Cplex&#xff1a;Cplex下载、IDEA环境搭建、docker部署 windo…

线性链表 反转 -(递归与非递归算法)_20230420

线性链表 反转 -(递归与非递归算法)_20230420 前言 线性链表反转是非常有趣的算法&#xff0c;它可以采用多种方式实现&#xff0c;比较简洁的方法是递归反转&#xff1b;传统的方式是利用迭代反转&#xff0c;设定三个变量&#xff0c;采用类似滚动数组的方式&#xff0c;实…

React Hooks生命周期

文章目录 前言一、类组件的生命周期1、什么是类组件2、生命周期钩子 二、函数组件生命周期1、什么是函数组件2、模拟类组件生命周期钩子 三、为什么要使用生命周期1、我们能在钩子里面干什么2、PureComponent和React.memo区别 总结 前言 最近在写react项目&#xff0c;所以一直…

【Java网络编程】Socket套接字

哈喽&#xff0c;大家好~我是你们的老朋友&#xff1a; 保护小周ღ&#xff0c;本期为大家带来的是网络编程的前提概念 Socket 套接字&#xff0c;操作系统提供Socket 用于封装底层的协议细节和通信逻辑&#xff0c;使应用程序可以通过简单直观的API与网络进行交互。所以客观的…

在poetry虚拟环境下打包exe

本博客介绍了在poetry虚拟环境下打包exe的流程&#xff0c;包含两个部分 打包的基本流程打包过程中遇到的问题 打包的基本流程 copy打包工具到本地,&#xff08;share:\公用共享\芯片部\乔羽\img_generate\系统部提供的打包exe工具&#xff09; 用poetry搭建虚拟环境 在打包…

微积分入门

文章目录 前言初期积分微分微积分问题 后期极限 ε \varepsilon ε- δ \delta δ极限勒贝格积分 结语 前言 微积分总共走过了两个时期。首先是牛顿和莱布尼茨利用无穷小量定义微分和积分&#xff0c;并且发现了微分和积分的关系&#xff0c;这是第一个时期&#xff0c;这时的…

如何在元宇宙中促进品牌增长:消费者喜好的热点调查

欢迎来到Hubbleverse &#x1f30d; 关注我们 关注宇宙新鲜事 &#x1f4cc; 预计阅读时长&#xff1a;5分钟 本文仅代表作者个人观点&#xff0c;不代表平台意见&#xff0c;不构成投资建议。 音乐和旅游是用户被元宇宙虚拟体验所吸引的前两个领域。根据Reach 3 Insights的…

ArrayList 的特点及优缺点

前面讲过&#xff0c;数组有很多缺点且使用不太方便&#xff0c;但是我们存储数据的时候很多情况又不得不使用它&#xff0c;那么有没有对数组封装一下的类&#xff0c;让我们更方便呢&#xff1f;答案是有的&#xff0c;他就是 ArrayList&#xff0c;他是一个基于数组的集合&a…

Ceph入门到精通- storcli安装

storcli 是LSI公司官方提供的Raid卡管理工具&#xff0c;storcli已经基本代替了megacli&#xff0c;是一款比较简单易用的小工具。将命令写成一个个的小脚本&#xff0c;会将使用变得更方便。 安装简单&#xff0c;Windows系统下解压出来以后可以直接运行。 Linux系统默认位置…

CGI, FastCGI, WSGI, uWSGI, uwsgi一文搞懂

1. CGI # 1、通用网关接口&#xff08;Common Gateway Interface/CGI&#xff09;是一种重要的互联网技术&#xff0c;可以让一个客户端&#xff0c;从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器和请求处理程序之间传输数据的一种标准。 # 2、CGI程序可以…

今儿咱就看看redis的淘汰策略你知道多少

一、前言 Redis在我们日常开发中是经常用到的&#xff0c;Redis也是功能非常强大&#xff0c;可以进行缓存&#xff0c;还会有一些排行榜、点赞、消息队列、购物车等等&#xff1b;当然还有分布式锁Redisson&#xff0c;我们使用肯定少不了集群&#xff01;小编最近学习到一些…

AI-ISP:手机相机是如何将风景变成图片的?

文章目录 前言1. ISP芯片2. Sensor知识3. RAW数据4. ISP Pipeline5. AI-ISP结束语 前言 本篇文章只干一件事&#xff1a;AI-ISP&#xff1a;手机相机是如何将风景变成图片的&#xff1f; 1. ISP芯片 一颗小小的SoC芯片(10mm x 10mm)上集成了一百多亿个晶体管(Kirin 9000有153亿…

【pandas】Python读取DataFrame的某行或某列

行索引、列索引、loc和iloc import pandas as pd import numpy as np # 准备数据 df pd.DataFrame(np.arange(12).reshape(3,4),indexlist("abc"),columnslist("WXYZ"))行索引(index)&#xff1a;对应最左边那一竖列 列索引(columns)&#xff1a;对应最…

建筑数据破解JS逆向爬虫

建筑数据破解JS逆向爬虫 地址&#xff1a;https://jzsc.mohurd.gov.cn/data/project GitHub地址&#xff1a;https://github.com/NearHuiwen/JzscCrawler RequestsPyExecJS JS文件&#xff1a;req_aes.js 目标 抓包&#xff0c;抓取建筑市场数据(注&#xff1a;用于学习&am…

multi-scale training多尺度训练

文章目录 背景参考1&#xff1a;[输入不同长度的向量,输出相同长度](https://www.zhihu.com/question/569406523/answer/2780168200)&#xff1a;参考2&#xff1a;[多种尺寸的图像数据训练没有全连接层的卷积神经网络模型](https://www.zhihu.com/question/533481647)参考3&am…

展开说说:Adobe XD 哪个版本好用?

工具还是得顺着自己的习惯才是最好 即时设计 - 可实时协作的专业 UI 设计工具即时设计是一款支持在线协作的专业级 UI 设计工具&#xff0c;支持 Sketch、Figma、XD 格式导入&#xff0c;海量优质设计资源即拿即用。支持创建交互原型、获取设计标注&#xff0c;为产设研团队提…

如何快速将PDF文件转换为Word文档

PDF文件是一个广泛使用的电子文档格式&#xff0c;其被广泛应用于各种领域&#xff0c;包括教育、商业和政府。虽然PDF文件非常实用&#xff0c;但有时你需要将其转换为Word文档&#xff0c;以便更方便地编辑和处理。以下是几种快速将PDF文件转换为Word文档的方法。 1. 使用在…

Linux Shell 实现一键部署http+用户名密码登录

Apache 前言 Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上&#xff0c;由于其跨平台和安全性被广泛使用&#xff0c;是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充&#xff0c;将Perl/Python等…

【python】采集天气数据并作可视化,怀念一下之前得好天气

前言 这几天&#xff0c;长沙得天气突然爆冷&#xff0c;每天上班跟渡劫一样 生怕一不小心&#xff0c;风就把伞吹跑了&#xff0c;人湿点无所谓&#xff0c;但是我得伞不能有事 现在得我无比怀念之前得好天气&#xff0c;今天我就来采集一下天气数据并作个可视化怀念一下它…