python群控安卓_Github优秀项目推荐,安卓设备免Root实现低延迟投屏和远控

暑假找了个暑假工,没办法人总是要吃饭嘛,Weiney也不例外。亲戚家的小公司想做移动app引流,当然我是完全不懂什么引流,我也就做个打杂的工作。别看我技术一般,在这个不大的公司我还是唯一专业对口的技术人才呢,其他的都是非对口的,这里我要叉会腰😎😎😎

没去过大公司,不知道大公司对于项目的立项是怎么操作的。反正就在上个星期在饭桌上吃饭的时候,老板一拍大腿:“公司现在就是要做app引流,如果有个系统可以一台电脑控制一大堆手机的话那效率应该会提高很多,你说是不是Weiney?”。群控我当然知道啊,以我爱吹牛的性格免不了跟老板侃侃而谈一波。这一吹牛不打紧,老板还以为我是个行家,点名要求我把这个系统研究出来,还给了我两个星期充裕的时间让我尽情发挥。没等我准备介绍一下市场上成熟的实现方案老板就打断了我,“市场上的都要钱,要钱的话我还找你干啥?”😱完蛋,这次怕是玩脱了。

这么大个工程我一个人肯定是搞不定的啦,别说两个星期就算是两年也难。但是我不妨先把需求整理清晰再看看怎么实现,明确需求是首先要解决的问题

电脑监多台安卓设备,要求数据的实时性,画面不卡顿

电脑控制手机,常规的的点选操作,中文输入操作

在群控的基础上加上脚本功能,可以自动化操作设备

听起来就很麻烦,我最开始想的是用Appium来实现。因为Appium也支持多设备连接,通过屏幕截图映射设备屏幕,实现对设备的控制。大致功能都能实现,我简单的尝试了一下发现有很大的弊端。①:屏幕截图延迟太大,一秒最多实现三帧的图像传输,这还仅仅是单设备在线的情况。②:屏幕控制弊端太大,不能很好的支持屏幕点击,文字输入。③:Pyqt5我不是很会用😬,所以这个方案就被我Ban掉了。自己搞不定的东西就上网看看别人怎么搞定的。学习计算机就有一点好处,你想实现的但是又搞不定的东西肯定有人帮你搞出来了。

Scrcpy

大名鼎鼎的Genymobile公司的开源项目,没错号称最快的安卓模拟器Genymotion模拟器也是出自他们家。项目地址:https://github.com/Genymobile/scrcpy。Github stars过万,从这里就可以看出Scrcpy项目的火爆程度。该项目实现了安卓设备的免Root低延迟投屏和远控。免Root是最大的优势啊,市面上大部分的群控系统许要Root权限。但是众所周知现在的安卓设备的Root并不像前几年那样随便找个一键Root就能解决了。现在的设备Root不要太麻烦,Scrcpy这个特性真是直戳痛点鸭。

设备要求:Android 5.0以上(API 21 以上)

操作系统兼容:Windows,Linux,Mac OS三平台通杀,强大到没朋友

本机环境要求:ADB环境支持,也就是说要安装Android SDK

对于Windows操作系统Genymobile还贴心的为我们打包了exe,我们只需要下载使用就好了,可以说是极其方便了。这里用Windows客户端进行演示。使用Scrcpy要求手机打开开发者模式和USB调试。可以在shell中使用adb devices查看当钱电脑连接的设备。对于Windows平台的Scrcpy直接启动exe的话只能映射一台设备,如果电脑连接设备超过一台的话就会报错。这种情况我们需要通过shell控制台用指定的命令启动设备,scrcpy --serial [设备名称] 或 scrcpy -s [设备名称]。

控制设备不但可以通过鼠标点击屏幕实现,对于系统按键的话Scrcpy同样给我们提供了键盘快捷键,几乎可以实现对设备的完全控制。快捷键代码见下图。

设备操作快捷键

总之Scrcpy就可以实现我老板需要的功能,跟市面上的群控系统肯定是有差距,但是贵在免费不是?该项目是基于C语言的,研究透原理之后就可以根据自己的需求进行重置。Python写GUI实在不是很方便,还是建议用C#或者C++。但是不同语言都有相应版本的拓展,感兴趣的可以研究一下。

QtScrcpy

基于Scrcpy实现的带图形界面的安卓投屏,技术栈用到了C++和QT。项目地址:https://github.com/barry-ran/QtScrcpy。可以通过USB和WiFi连接安卓设备,因为作者做了封装并且打包了ADB环境,所以可以直接运行软件。作者描述说软件硬编码只支持十六台设备,但是如果机器支持的话可以修改源码自己打包。

基于本项目作者还开发了相应的配套视频,当然视频是收费的如果有需要并且有学习C++的QT编程的话可以了解一下。课程地址:https://blog.csdn.net/rankun1/article/details/87970523。还有一个重要的功能就是QtScrcpy支持屏幕录制保存,这个也是源项目没有作者自己开发的,有兴趣可以了解下。

Naive-Scrcpy-Client

这个是一个国外大佬做的扩展,是基于Python的Scrcpy支持。需要用到FFmpeg支持,但是目前只实现了投屏功能,控制功能暂未实现。和作者沟通了一下,作者说当前代码已经实现了他的所有需求所以暂时不会有功能更新。但是我个人觉得如果可以封装成一个Python轮子的还估计响应肯定很强烈,毕竟在这一块Python还没有很好的支持库支持。也希望后续作者能够继续完善项目。项目地址:https://github.com/LostXine/naive-scrcpy-client。

写在最后

底层大神已经帮我们开发好了,剩下的就要靠我们自己去完善了。Scrcpy的原理很简单,就是通过一个APP在手机端建立一个sock服务器,然后本机不断地sock获取并将数据流转化为相应的视频流。几乎所有的项目都是选择FFmpeg。自己造轮子以我的水平还真是有点困难,这几天抽空用PyQt写一个图形界面实现GUI创建设备投屏,这个应该不难,主要是要看看Qt怎么用,都是从头开始😓😓😓

当我吧投屏效果展示给老板看的时候,他首先肯定了我这段时间的辛勤工作,随即表示公司现在规模还不适合搞这种项目,让我老老实实研究其他渠道引流,所以这个东西就搁置在这了???

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

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

相关文章

.net pdf转图片_pdf2image类库实现批量pdf转图片

通过pdf2image来实现对PDF文件的处理工作,我们本次主要做的是将PDF文件批量转成图片。之前写过批量提取封面的文章,但是在后期的深入编写过程中遇到一些问题,近期再次深入编写程序,一起来看看代码吧!python一、说明本次…

java 悬浮提示框_表格(悬浮框提示)

JTable的ToolTip提示和其它的组件提示是一样的,因为它们都是继承于Jcomponent,当我们需要为我们的单元格实现ToolTip的时候,只需要复写它的getToolTipText方法就可以了,看看Sun官方的例子://Implement table cell tool tips.OverridepublicString getToolTipText(Mo…

linux远程工具_【linux实操3.1】linux远程连接工具Secure的使用

把自己的闲置笔记本用来做centos7服务器了,同时也出一期教程,记录自己同时也帮助需要的人;安排如下1、【linux实操1】华硕笔记本安装centos7实战2、【linux实操2】使用yum在命令行安装常用工具3、【linux实操3】安装漂亮的桌面xfce桌面**记录…

IOS--UIAlertView的使用方法详细

IOS--UIAlertView的使用方法详细 // UIAlertView的常用方法 // 标准样式 UIAlertView *oneAlertView [[UIAlertView alloc] initWithTitle:"标题"message:"提示内容" delegate:self cancelButtonTitle:"关闭"otherButtonTitles:"OK"…

afreecatv 回放下载_行车记录仪怎么看回放?行车记录仪停车后能自动录像吗

点击上面蓝色字↑↑↑即可免费订阅!请喜欢的朋友请转发和分享,让更多朋友看到汽车知识天天学 (微信号:qiche92 )  行车记录仪最关键的一个部件,它就是储存零件——TF卡(内存卡)。在购买行车记录仪时,TF卡并不是标配&…

linux导出mysql下ssl证书_Linux系统下生成证书 https证书

平时都是用oneinstack加密https现在因为本地调试 需要https就找到这篇文章Linux系统下生成证书生成秘钥key,运行:$ openssl genrsa -des3 -out server.key 20481会有两次要求输入密码,输入同一个即可输入密码然后你就获得了一个server.key文件.以后使用此文件(通过openssl提供的…

lstm原始论文_有序的神经元——ON-LSTM模型浅析

尽管最近出现的Transformer系列的模型在nlp领域内很流行,但RNN仍然有着重要的地位。本文介绍的模型来自于ICLR 2019的最佳论文之一,它针对自然语言具有语法分层的特点,对原有的LSTM模型的结构做出了改进,使得新模型不仅具有更好的…

malloc函数详解

一、原型&#xff1a;extern void *malloc(unsigned int num_bytes); 头文件&#xff1a;#include <malloc.h> 或 #include <alloc.h> (注意&#xff1a;alloc.h 与 malloc.h 的内容是完全一致的。) 功能&#xff1a;分配长度为num_bytes字节的内存块 说明&#xf…

c++ 航空管理系统_浅谈航站楼能源管理系统的设计与应用

蒋超萍江苏安科瑞电器制造有限公司 江苏江阴 214400 【摘要】根据航站楼的特点&#xff0c;从航站楼能源消耗现状、能源管理系统的功能、系统架构、子系统以及能源的优化调度方案五个方面介绍了航站楼能源管理系统的设计&#xff0c;并对节能效果进行了预测。关键词&#xff1a…

mysql 线性表_线性表之顺序存储,基本操作

/*九大基本操作(不同的存储结构实现的代码不同)此处用一维数组的动态分配&#xff1a;InitList(&L);//初始化表&#xff0c;Length(L);LocateElem(L,e);GetElem(L,i);ListInsert(&L,i,e);ListDelete(&L,i,&e);PrintList(L);Empty(L);DestoryList(&L);*//*静…

mac python安装太慢_【已解决】Mac中给pip3添加代理以提升下载python包的速度

折腾&#xff1a;【未解决】Mac中Python 3.7安装TensorFlow期间&#xff0c;用&#xff1a;pip3 install tensorflow期间会去从下载python包此处连接files.pythonhosted.org的速度很慢。而自己有代理可用。所以想办法去给pip3或pip用上代理&#xff0c;加速下载mac pip3 use pr…

集合数据源

集合数据源主要包括ArrayList,Hashtabel,DataView,DataReader转载于:https://www.cnblogs.com/handsomer/p/4150400.html

LeetCode 1785. 构成特定和需要添加的最少元素(贪心)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums &#xff0c;和两个整数 limit 与 goal 。 数组 nums 有一条重要属性&#xff1a;abs(nums[i]) < limit 。 返回使数组元素总和等于 goal 所需要向数组中添加的 最少元素数量 &#xff0c;添加元素 不应改变 数组中 …

insert和update 锁等待_黑龙F5智感双全智能锁全球首发,掀起惊艳风潮

2020备受瞩目重磅新品 —— 黑龙F5智感双芯智能门锁&#xff0c;正式官宣&#xff0c;革新行业的智感解锁交互&#xff0c;强大的双芯片双智控&#xff0c;再次掀起惊艳风潮。双芯片科技感交互&#xff0c;领行业新风向黑龙F5智能锁前沿性地配备双芯片&#xff0c;以双核分别掌…

java喷泉编码_好程序员Java教程分享使用JS实现简单喷泉效果

原标题&#xff1a;好程序员Java教程分享使用JS实现简单喷泉效果好程序员Java教程分享使用JS实现简单喷泉效果&#xff0c;最近&#xff0c;在教学生使用JS的基本操作&#xff0c;为了练习JS的基本作用&#xff0c;特地写了一个喷泉效果&#xff0c;代码如下&#xff1a;页面代…

python 类继承 父类初始化_python之子类继承父类时进行初始化的一些问题

直接看代码&#xff1a;classPerson:def __init__(self):self.name "jack"classStudent(Person):def __init__(self):self.school "一中"stuStudent()print("学生的姓名是:",stu.name)此时&#xff0c;程序是不能正常运行的&#xff0c;运行之后…

『WPF』实现拖动文件到窗体(控件)

前言 实现从窗口外部拖文件到窗口内部并自动捕获文件地址。 第一步 开启属性 启用底层Window的AllowDrop属性&#xff0c;添加Drop事件。 Drop事件&#xff1a;当你拖动文件到对应控件后&#xff0c;松开触发。 除Drop事件外&#xff0c;我们还可以使用DragEnter、DragOver、Dr…

怎么更改苹果账户名称_番茄todo小组件背景怎么改 苹果番茄todo小组件背景更改方法介绍...

番茄todo小组件背景怎么改&#xff0c;这也是大家会用到的一款倒计时APP&#xff0c;那么用户们应该怎么更改小组件的背景图片呢&#xff0c;可能还有些人不知道更改的方法。所以这里就为大家带来了具体的步骤!番茄todo小组件背景怎么改1.在打开APP后&#xff0c;如没有待办事项…

LeetCode 1786. 从第一个节点出发到最后一个节点的受限路径数(迪杰斯特拉 + 拓扑排序)

文章目录1. 题目2. 解题1. 题目 现有一个加权无向连通图。 给你一个正整数 n &#xff0c;表示图中有 n 个节点&#xff0c;并按从 1 到 n 给节点编号&#xff1b;另给你一个数组 edges &#xff0c;其中每个 edges[i] [ui, vi, weighti] 表示存在一条位于节点 ui 和 vi 之间…

java选择题多选题系统小程序_单选题与多选题判断得分(自动考试小程序,入门级)...

【单选题与多选题判断得分】【核心代码】using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace 自动…