TC软件概要设计文档(手机群控)
作者:将狼才鲸
日期:2021-06-27
源码详见 才鲸嵌入式 / qtscrcpy_tc_安卓手机群控
qtscrcpy_tc_安卓手机群控: 安卓手机投屏、录屏、手机控制、多台安卓手机群控(TC),基于QtScrcpy源码 (gitee.com)
基于QtScrcpy项目开发TC软件,开源项目地址QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限
1,每组可以连接100台手机(需要PC硬件显卡支持)
2,支持群控
3,支持手机的基本操作
4,可以批量安装apk包
5,支持中文输入法
6,支持脚本运行
7,部署环境:Windows和Ubuntu
8,USB直连
项目周期:一个月
侠客版本:用服务器abd做连接,再需要一台电脑通过网络做传输,效率低。
其它版本:没有源码
项目总耗时 |
150小时,6.3 ~ 7.3 |
工作日晚上4h + 周末每日8h |
进度节点 |
概要设计阶段 |
6.3 ~ 6.6 |
详细设计阶段 |
6.7 ~ 6.13 |
|
主页面完成及单元测试 |
6.14 ~ 6.20 |
|
全部页面完成及单元测试 |
6.21 ~ 6.27 |
|
综合测试 |
6.28 ~ 6.30 |
|
项目联调 |
7.1 ~ 7.3 |
|
项目预算 |
150h * xx元/h |
x元 |
第一步,将设备ui移到主ui,在主ui中显示一个手机窗口,不再重新弹出窗口 |
第二步,将一个手机窗口拷贝成96个窗口,并缩小窗口,依然保证交互正常 |
第三步,在主ui中连接多个设备,并保证交互正常 |
第四步,将主ui的菜单做到左侧竖排和隐藏菜单,并让主界面能全屏 |
第五步,将手机窗口的配置操作融合到主ui中 |
第六步,增加按手机个数动态排列手机窗口 |
第七步,增加手动配置菜单哪些项显示哪些项隐藏 |
第八步,ui上可以设置一个主要显示的手机大界面,其它的为统一的小界面 |
配置选项 |
安卓文件保存路径,视频流最大帧率,跳过渲染过期视频帧,解码方式:硬解或软解,server版本号,server推送路径,adb路径,指定编码器(仅支持h264),日志级别。保存路径,比特率,最大尺寸,窗口有无标题栏,方向锁定,录屏,后台录制,显示帧率,窗口置顶,自动息屏,保持唤醒,小窗模式,窗口大小。(视频仅支持MP4+H264) |
|
标题名,推送文件路径,server组件版本号,server存放配置,使用桌面OpenGL,使用皮肤,缓存区帧,adb路径,日志级别,编解码器设置,编解码器路径,录屏路径,比特率,最大尺寸,录屏封装格式(mp4等),方向锁定,录屏,显示帧率,窗口置顶,关闭自动旋转,保持活动,精简模式,窗口大小,设备名称 |
||
手机端server |
主线程 |
编码和推流到PC端,视频流,视频采集(录屏) |
控制器线程 |
接收键盘鼠标信息,控制指令,安卓模拟点击 |
|
接收线程 |
发送剪切板等信息到PC端 |
|
运行中应用消息,剪切板,手机信息,显示信息,输入信息,电源管理,系统服务管理,状态栏,图像缓冲截屏,窗口管理,清理连接,编解码,控制器键盘鼠标,控制器消息,桌面连接,设备控制,显示信息,IO,键值映射,日志,参数配置帧率日志等,智能指针,位置,画幅大小,工作区 |
||
编解码器操作测试、控制消息读测试、设备消息写测试、字符串单元测试 |
||
PC端client |
主线程 |
接收qt的控制 |
视频流线程 |
接收视频用于解码显示或者编码后存储为文件 |
|
控制器线程 |
发送键盘鼠标信息 |
|
接收线程 |
接收手机剪贴板之类信息 |
|
键盘映射 |
使用相对位置,将鼠标与触摸进行映射,将键盘与点击进行映射,当前配置了吃鸡和抖音等应用操作。 |
|
ui |
业务逻辑 |
等待当前文件传输完成,文件传输完成,文件传输失败,安装apk,文件传输,传输完成,保存在,失败,无线连接,无线断开,启动配置,录像保存路径,选择路径,录制格式,录制屏幕,无边框,启用精简模式,精简模式,一键WIFI连接,一键USB连接,双击连接,锁定方向,显示fps,保持唤醒,设备名称,更新设置名称,停止所有服务,adb命令,终止执行,清理,反向连接,自动启用脚本,后台录制,自动息屏,应用脚本,最大尺寸,窗口置顶,刷新脚本,获取设备IP,USB和无线,停止服务,启动服务,设备序列号,比特率,启动adbd,刷新设备列表,显示,退出,原始,不锁定,警告,退出还是最小化到托盘,最小化到系统托盘,取消,提示。全屏,下拉通知,锁屏,解锁,触摸显示开关,关闭屏幕,电源, 音量加,音量减,切换应用,菜单,主界面,返回,截图。等待当前文件传输完成,文件传输完成,文件传输失败,文件不存在。 |
样式表 |
||
adb |
adb路径,允许调试,设备串号,设备IP,方向,旋转,推送,安装,移除。 |
|
设备管理 |
连接设备,分配端口,更新脚本,窗口置顶,显示帧率,断开设备,断开所有设备,设置群控信号,控制状态切换,鼠标事件,滚轮事件,键盘事件,释放端口。键值映射路径,加载键值映射参数,切换键盘,反转,点击监测,检查延时,消息控制,切换游戏,更新尺寸,触控ID,模拟多点触控,处理鼠标移动,监测鼠标位置,移动鼠标位置,鼠标移动定时器,鼠标滚轮键值事件,剪贴板信息,设置视频帧信息,打开解码器,推流,fps控制,帧缓存,adb处理,录屏,绘制图像和纹理,TCP server,执行adb命令,视频socket,流控制,界面控制。 |
|
控制指令,鼠标键盘事件,视频流推送到ffmpeg和opengl,屏幕 |
||
显示 |
解码,渲染,显示 |
暂略。
手机设备端执行server,PC主机端执行client。
PC端捕捉鼠标和键盘,将命令发到手机端执行。
手机录屏h264流,PC端无缓存立即显示。
TCP 5005端口是调试端口。
当前不支持声音。
视频流线程收到一帧后马上通知主线程显示,不做缓存和时间控制。
主界面布局如图:
见详细设计文档。