TC软件概要设计文档(手机群控)

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直连

项目周期:一个月

  • 需求分析
  1. 已有QtScrcpy项目参考,不需要从头做系统设计,项目周期可以缩短。
  2. 需要有C++、java、UI界面、音视频开发技能。
  3. 群控、手机的基本操作、安装apk、中文输入、脚本控制、USB连接逻辑在QtScrcpy中都已经实现。
  4. 需要重新开发UI界面,将手机屏幕显示界面从独立的界面合并到同一个主界面中。
  5. 需要连接USB hub。
  6. 需要缩放手机屏幕,缩放屏幕后需要对鼠标和手机屏幕的映射适配正常,需要和电脑屏幕大小适配将不同手机画面放在合适的位置。
  7. 实际群控时,可以将一个界面放大显示,其它界面缩小后铺满其它的空间。
  8. 所有增加视频推流合并的模块,做多图层显示。

  • 竞品分析

侠客版本:用服务器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上可以设置一个主要显示的手机大界面,其它的为统一的小界面

  • 概要设计
  1. 系统框图

TC软件概要设计文档(手机群控)_第1张图片

  1. 模块功能

配置选项

安卓文件保存路径,视频流最大帧率,跳过渲染过期视频帧,解码方式:硬解或软解,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,屏幕

显示

解码,渲染,显示

  1. 系统流程图

暂略。

手机设备端执行server,PC主机端执行client。

PC端捕捉鼠标和键盘,将命令发到手机端执行。

手机录屏h264流,PC端无缓存立即显示。

TCP 5005端口是调试端口。

当前不支持声音。

视频流线程收到一帧后马上通知主线程显示,不做缓存和时间控制。

  1. UI设计示意图

主界面布局如图:

TC软件概要设计文档(手机群控)_第2张图片

  • 详细设计

见详细设计文档。

你可能感兴趣的:(3,Qt,GUI从入门到深入,qt,嵌入式,c++,ui,android)