-
2017-09-15 17:28:37
最近有这样一个需求,多台手机之间,手机B,手机C,手机D全部显示手机A的屏幕或摄像头画面。
一开始为了快速实现,方案为手机A截屏,然后用socket发送给其余手机,效果实现,但是非常卡顿。
后来,想用流实现其功能,类似于直播的感觉。但是无奈流媒体服务器搭建不太熟悉。
最后,改用实时获取h264流,然后实时通过socket发送。已实现
实现步骤:
1获取MediaProjection对象:
mMediaProjectionManager = (MediaProjectionManager)getSystemService(Context.MEDIA_PROJECTION_SERVICE); Intent intent = mMediaProjectionManager.createScreenCaptureIntent(); startActivityForResult(intent, REQUEST_CODE);
2.开启屏幕录制线程ScreenRecorderThread
2.1创建编码器
2.2录制视频
2.3发送(先发送sps,pps)
后来又有一个需求,让接收的屏幕的手机控制发送屏幕的手机
方案:
1.获取当前手机屏幕大小,在和发送屏幕手机的手机屏幕大小做一下比例。确定点击坐标,点击滑动动作
2.发送给服务器,让服务器根据数据转换成adb控制手机的语句
3.手机通过usb与pc相连,pc执行adb语句,手机受到虚拟触控
后续,今天是2018年7月18日,我好久没有关注博客了,今天有时间看到这篇博客被大家看了好多遍,但是方案已经完全不一样了,所以我更新。如果你看到这请继续向下看,因为这个项目用下边的这种方法做出来想过更好,同局域网下屏幕同步上至少600毫秒以下,控制上说毫秒可能大家没有概念,效果上能够做到画线绘制上的同步,比如输入法上的手写输入不能说完全同步,但是延时也是很小的。但是不得不承认我还不能做到像total control的效果。由于代码的保密性,这里只提供方案,后期我会写一个删减版的dome。
1屏幕同步上
如果你只有自己一个人或者要求不太高的话,建议采用udp的方式,这样的话延时一般在200到600毫秒之间,这个延时是个什么概念尼?可以这样理解,你将2个手机放在一起,你操作一个手机A,操作完这个手机A,你就看手机B,这时手机B正在执行你的点击滑动的操作。这里的udp发送是的将h264的btye数组封成一个包,然后直接发送,但是请注意udp包的最大限制为64k,这意味着你可能(不是可能,是一定现在手机的分辨率会发生发送数据包超过限制导致那个超大包发送不过去的情况),但是这时你可以先不管这个,先把通过比特率,录制分辨率压缩分辨率,关键帧间隔等(比特率降低,将视频压缩到480*640等)让发送的包变小(就是发送的数据不清楚了),先暂时暂时暂时忽略这个问题(如果你看完效果决定用这个方法了解决方案,那么你就研究下udp的组包吧,但是组包也不是万能的呦,因为它丢包,要是你解决不好的话我只能用tcp的socket了),先看效果。(注意了:如果效果你能接受,你就测测大概的延时,用手机A打开秒表,然后你点击暂停的时候,看看手机B此时跑到了哪里,你就能知道了)。
如果你不是自己在做这个项目,或者你有一个很高的要求,请看这里。用rtsp吧,局域网下延时能稳定到200ms内,外网就得看网速了。
关于控制的方法:
不知道大家注意没注意过,目前市场上(不算同一厂商的手机,而且手机不需要root),没有一款软件能够跨网控制手机,就算是total control等都不能。当然这不是绝对的,只是不能面向大众。这里我们说能够面向大众的,在局域网下的情况,那我们来说一个像total control是怎么样实现的。请先仔细注意一下total control这类软件不差数据线和插数据线时的不同。当插上数据线时,怎么控都行,但想wifi控制时是需要先插一下数据线的,而且当你重启手机后也是需要插数据线的。找到个问题的关键么,就是说每次重启手机后,都需要插一下数据线,那么为啥需要插一下数据线尼?因为它要做一个初始化的工作。我目前采用的就是这样的方式。
写一个dex文件,然后用pc写一个启动器,然后让dex监听一个固定的端口,这个dex文件的功能就是接受某一个触控消息然后将它转变为MotionEvent事件,然后执行。这就能理解为给手机一个我写的MotionEvent事件,然后从PhoneView等向下传递。下边开始一个思路的讲解,具体代码大家百度一下就知道了。
我将整个流程分为4部分:1数据源(手机A发送数据) 2被控制的手机(接收数据源,并转化) 3dex文件(接收自定义协议,执行协议) 4pc启动器
编写dex文件,先写一个java文件,然后再转dex文件。Java文件中绑定udp的服务,并将按自定义通信协议完成转换,如果你是一个小白,请你注意用最简单的方式(使用!@#等进行协议之间的分隔符,不要用json等传统协议,因为最简单的运行在手机的dex文件有好多依赖不能用)然后将有用的信息取出来后进行生成MotionEvent事件(请先打印多种情况下的MotionEvent事件看一看)至于怎么编写MotionEvent事件去百度就好,再此指出能够支持屏幕的多指,长按和音量键,开机键等。
pc启动器。2个功能,最好有adb命令的基础,没有的话就只要什么查一下命令吧,1首先检测手机sd卡的指定位置有没有你的dex文件,没有就传一个过去。2将这个dex文件运行起来。
手机A(pc,平板)等采集点击滑动点,并按照协议进行发送(注意注意注意:请不要用分辨率点,因为每个手机的分辨率不同,建议才用比例的方法)。被控手机B将手机A的数据源进行解析,并转化,再发送给dex文件。(关于手机中这2部分怎么传输,就涉及到了linux的传输,但是直接用udp吧我感觉还是最好的,像什么心跳之类的自己去想吧,想的越多优化越好)
整体流程就是这样,那些优化想的越多,效果就越好,我也不一 一指出了。按照流程去查一下,就ok了。写的优点乱,但是具体思路已经写下了。
更多相关内容 -
如何实现内网多电脑同屏协同?
2021-07-28 10:49:27第一步:win7局域网屏幕共享(本机)1. 在局域网中的一台Win7电脑桌面上,右击计算机图标,选择下拉菜单中的“属性”。...第二步:win7局域网屏幕共享(另外电脑连接)另一台电脑上按win + R键,进入运行对话框,输入mst...第一步:win7局域网屏幕共享(本机)
1. 在局域网中的一台Win7电脑桌面上,右击计算机图标,选择下拉菜单中的“属性”。
2. 弹出窗口中选择“高级系统设置”,
3. 弹出的窗口中点击“远程”选项卡,勾选“允许远程协助连接这台计算机
4. 远程桌面栏,选择“允许运行任意版本远程度桌面的计算机连接”。
第二步:win7局域网屏幕共享(另外电脑连接)
另一台电脑上按win + R键,进入运行对话框,输入mstsc,弹出远程桌面连接对话框,输入屏幕共享电脑的IP地址,点击连接共享对方屏幕。
mac和windows局域网共享屏幕的方法和上述的理论是一样的,都是在本机进行对应设置,如果是windows还需要下载第三方局域网屏幕共享软件,操作比较复杂,不够便捷。
这样就实现了桌面共享,但是这样的共享方式有局限性,不同计算机的操作方式不同,或者有些计算机会不支持。比如:mac和windows局域网共享屏幕怎么实现?肯定是不可以用上述win7局域网屏幕共享的方法。win10能用的局域网屏幕共享方法又是什么?
所以,我们需要找一个支持全平台全终端支持的局域网桌面共享的方法,并且上述win7局域网屏幕共享方法仅仅是单纯的屏幕共享,无法实现远程协同办公。没有办法支持远程同屏批注等功能,切换演示者也是比较麻烦,需要重新设置电脑,不同的参会终端也会有很大的限制性。
连通宝屏幕共享软件全平台支持,全终端支持局域网电脑屏幕同步显示,即可实现win7局域网屏幕共享,mac和windows局域网共享屏幕,win10局域网屏幕共享等跨终端局域网同屏分享。
-
Windows:直接使用命令运行一个程序
2019-04-09 10:53:56打开Windows运行命令 win+R,就是运行命令快捷键 Windows 自带常用运行命令: 1、cleanmgr:打开磁盘清理工具 2、compmgmt.msc:计算机管理 3、conf:启动系统配置实用程序 4、charmap:启动字符映射表 5、...打开Windows 运行命令
win+R,就是运行命令快捷键
Windows 自带常用运行命令:
1、cleanmgr:打开磁盘清理工具
2、compmgmt.msc:计算机管理
3、conf:启动系统配置实用程序
4、charmap:启动字符映射表
5、calc:启动计算器
6、chkdsk.exe:Chkdsk磁盘检查
7、cmd.exe:CMD命令提示符
8、certmgr.msc:证书管理实用程序
9、Clipbrd:剪贴板查看器如果提示
解决此种问题,我们首先要到网上下载一个clipbrd.exe.
下载后,把clipbrd.exe放入C:\WINDOWS\system32文件夹里。
10、dvdplay:DVD播放器
11、diskmgmt.msc:磁盘管理实用程序
12、dfrg.msc:磁盘碎片整理程序
13、devmgmt.msc:设备管理器
14、dxdiag:检查DirectX信息
15、dcomcnfg:打开系统组件服务
16、explorer:打开资源管理器
17、eventvwr:事件查看器
18、eudcedit:造字程序
19、fsmgmt.msc:共享文件夹管理器
20、gpedit.msc:组策略
21、iexpress:工具,系统自带
22、logoff:注销命令用于电脑关机
23、lusrmgr.msc:本机用户和组
24、MdSched:来启动Windows内存诊断程序
25、mstsc:远程桌面连接26、Msconfig.exe(msconfig):系统配置实用程序
可以用于,设置开机启动项
27、mplayer2:简易widnowsmediaplayer
28、mspaint:画图板
29、magnify:放大镜实用程序
30、mmc:打开控制台
31、mobsync:同步命令
32、notepad:打开记事本
33、nslookup:网络管理的工具向导
34、narrator:屏幕“讲述人”
35、netstat:an(TC)命令检查接口
36、OptionalFeatures:打开“打开或关闭Windows功能”对话框
37、osk:打开屏幕键盘
38、perfmon.msc:计算机性能监测程序
39、regedt32:注册表编辑器
40、rsop.msc:组策略结果集
41、regedit.exe:注册表
42、services.msc:本地服务设置
43、sysedit:系统配置编辑器
44、sigverif:文件签名验证程序
45、shrpubw:创建共享文件夹46、write: 写字板
可以保存为doc格式文档
47、sysdm.cpl : 打开环境变量设置窗口
Windows系统设置通过命令打开常用软件
在开发过程中,有时会需要打开其他软件,通过鼠标的话需要点击桌面、开始菜单或工具条上的相应图标打开软件。
感觉通过鼠标有点慢,习惯通过win+R打开命令窗口,输入命令打开相应的软件,这种方式无论已经开启了多少窗口都不需要最小化(点击桌面图标运行需要先回到桌面),也不需要在开始菜单软件列表查找(尤其安装的软件较多时,找起来比较慢)。比如我打开pycharm时,直接win+R打开命令窗口,输入pycharm即可。如图:
设置方法
只要系统在path里能找到你输入的命令,即可执行命令。所以,我们只需把运行软件的命令加入path环境变量即可。方法一(不推荐)
每次安装软件,都把软件的运行程序所在目录加入path变量(不推荐),安装的软件多了如果命令有重复的会冲突,而且path变量会显得很乱。如:将D:\Python\pycharm\pycharm 2019.1.1\bin直接加入path变量里。方法二(推荐)
新建一个文件夹,将该文件夹路径加入path变量里,将软件的快捷方式放到该文件夹,快捷方式的名字就是以后要输入的命令,名字随便取,只要你知道名字对应哪个软件即可,这样只加入了一个路径,不容易污染path环境变量,如下图: -
实现同屏多窗口多任务!(红米亲测,任何安卓系统)
2015-02-26 13:54:54此贴为转帖 欲转载必须贴上此作者原帖 ...相信很多人和我一样,想要在安卓手机上拥有和windows一样的同屏多任务体验,同时上网,看视频,看书,聊QQ......相信很多人也羡慕着三星高端机型上面的同屏多窗口。此贴为转帖 欲转载必须贴上此作者原帖
感谢: 蜡 笔 小 心 肝 MIUI 论坛
红米 楼主已测:
——————————————————————
相信很多人和我一样,想要在安卓手机上拥有和windows一样的同屏多任务体验,同时上网,看视频,看书,聊QQ......相信很多人也羡慕着三星高端机型上面的同屏多窗口。
经过本人很长时间的努力,以及在各大神的帮助下,终于有了能够在大部分安卓手机、平板(需要root)上实现同屏多任务的方法(不需要刷机,不影响OTA)。
先介绍下能够实现的功能:
1.所有软件能够实现窗口形式(包括游戏,视频,相机)
2.能够同屏打开不限量的窗口(目前测试同屏8个,屏幕太小了)
3.能够自由调整每个窗口的大小
4.部分窗口能够实现0~100的透明度调整
放出教程:
首先需要3个软件:
- Xposed 安装器:在下方下载
- Xhalo Floating Window:在下方下载
- Portal (Floating Apps) [BETA] :在下方下载
然后是下一步: 1.安装Xposed安装器
2.选 框架——安装
3.重新启动
4.安装 Xhalo Floating Window 并在Xpose里面的模块里面勾选上,重启
5.打开Xhalo Floating Window 选择MOVABLE那项 选择成Enable,退出
6.安装最后一个Portal (Floating Apps) [BETA] 7.(MIUI V5系统才需要)在设置——应用里面找到后面两个软件,允许显示悬浮窗
8.打开Portal (Floating Apps) [BETA]软件,会在屏幕上出现一个小圆点,长按,之后会出现一个扇形的界面,长按里面的任何一个小块,就会出现选择程序的界面,选择你想要窗口操作的程序即可
9.长按小圆点,点击一下你想打开的程序,就会出现窗口化的程序,右下角的小三角可以缩放窗口大小,(部分软件)长按之后最上面的三个点点击下,可以选择Transparent,可以调节窗口透明度。
10,enjoy!各种细节自己发掘吧!
软件包下载地址:
软件包.zip
包括Portal (Floating Apps) [BETA] 的安装包
感谢作者 《蜡笔小心肝》
-
Qt实现多屏幕多分辨率自适应
2020-10-14 20:40:34前段时间写了一个软件,窗口内有自绘内容。 自绘内容里面用的长度单位都是像素。可想而知,在开发者的电脑屏幕上大小都是符合要求的。到这一步都没问题。 软件开发完成后发给客户,客户在他的电脑上运行,也没问题,... -
实现华为多屏协同--非华为电脑下载12.0.1.20华为电脑管家
2022-04-03 20:24:40详细介绍非华为电脑下载12.0.1.20华为电脑管家,实现多屏协同 -
2021年软件测试面试题大全
2020-11-30 15:16:59β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta 测试不能由程序员或测试员完成。 回归测试(对软件的新版本测试时,重复执行上一个版本测试时的用例,是为了... -
C++程序运行过程中发生异常闪退,很有可能是这三个原因导致的
2021-10-09 19:56:23详细讲述三种引起C++程序运行过程中发生异常闪退的常见原因。 -
在线运行 Linux,真滴牛逼。
2021-12-30 16:01:17除了在线使用之外,还可以通过命令行进行检查,支持基于 Debian、Arch Linux、EPEL、Fedora、FreeBSD、MacOS、OpenSUSE、Windows 等多个操作系统上进行安装检查; 对于 Shellcheck 命令行的安装方式,可以参考 ... -
Computer:Todesk(远程控制软件)的简介、安装、使用方法之详细攻略
2022-05-11 20:36:43博主近一段时间,通过下载安装,测试了文件传输、远程打印、远程开机,尤其是远程控制帮助博主自己的粉丝解决了很多编程上的bug,用起来还算比较得心应手,基本无延迟,而且不卡顿,要的就是口碑。其实,国外外市场... -
安卓手机屏幕在电脑上实时同步显示
2014-03-15 19:45:06设备的环境如下 电脑系统:WINDOWS 7 SP1 ...MirrorOp是一款商用软件,这里介绍的是“试用版”的效果 官方网站: http://www.mirrorop.com/ 下载链接: http://ajzxmfnnjt.l2.yunpan.cn/lk/QeiSgnPmbeEH -
使用UE4的nDisplay渲染到多个显示器
2019-03-20 09:41:41转自微信 https://mp.weixin.qq.com/s/gqJ6vLEhGIyhVaFW8POpXw 本文根据虚幻4.21版本的文档翻译。(原文地址:... 越来越多的可视化系统通过多个显示器... -
非华为电脑安装华为电脑管家,实现与手机平板的多屏协同
2021-09-25 14:51:00一、功能简介 ...b) 在制作 NFC 标签时选择适合自己的 SN 选项,有系统 SN、自定义 SN、自动 SN(同 老版本功能)。 更新日志: 增加自行可选安装包,兼容适配更新到 10.1.2.33,若有更新版本自行测试 去掉荣耀 -
在电脑上安装博途软件电脑运行较为顺畅,笔记本电脑需要怎样的配置?
2021-01-13 22:52:02在电脑上安装博途软件电脑运行较为顺畅,笔记本电脑需要怎样的配置?最佳答案请参考西门子官方资料《安装STEP7(TIAPortal)V13的必要条件是什么》条目ID:50204569,文献编写日期:2014年9月2日链接:... -
vysor原理以及Android同屏方案
2016-12-29 15:34:04vysor是一个免root实现电脑控制手机的chrome插件,目前也有几款类似的通过电脑控制手机的软件,不过都需要root权限,并且流畅度并不高。vysor没有多余的功能,流畅度也很高,刚接触到这款插件时我惊讶于它的流畅度... -
设定双屏,怎样使鼠标不会跑到第二个屏
2020-12-19 13:42:19要显示不同的内容,必须装“一拖二”软件。或者主板有一拖二功能。如:捷波K8T5P等。增加一台显示器、鼠标、键盘和“一拖二”USB接头即可。步骤一:将显示器连接到显卡的第二个VGA端口,并插好USB键盘和USB鼠标。在... -
推荐一个显卡的跑分跟压力测试的软件TimeSpy
2021-07-23 05:39:20今天,我将推荐一种称为3DMark的图形卡基准测试和压力测试软件。该软件是目前最可靠的图形卡基准测试软件。如果您经常购买图形卡,强烈建议您开始使用。但是据估计,没有人愿意花钱购买该软件。然后,我们来教您如何... -
1小时1篇文学会python再做个飞机大战游戏
2021-04-30 16:02:07作者简介 作者名:1_bit 简介:CSDN博客专家,2020年博客之星TOP5,蓝桥签约作者。15-16年曾在网上直播,带领一批程序小白走上程序员之...系列教程将会在流量降低时转为付费位置,流量多时将不会,各位抓紧时间学习哟~ -
安卓两台手机怎么实现屏幕共享?安卓两台手机实现屏幕共享教程
2021-05-27 01:21:24很多小伙伴在手机的使用中要用到屏幕共享,想要将两款手机进行屏幕共享,便于查看,很多小伙伴不知道怎么操作,安卓两台手机怎么实现屏幕共享,小编来为大家介绍。安卓两台手机怎么实现屏幕共享可以尝试用软件... -
推荐 21 款博主常用 Windows 软件
2021-06-14 14:27:32经常会有朋友让我推荐一些好用的软件,因此我打算写一篇博客来介绍一下这些我认为爱不释手的软件 -
python同花顺自动交易_基于python的炒股软件
2020-12-14 06:01:51炒股软件真的靠谱吗(2)2015年的5。3倍,人才需求直线上升,年复合增长率超过200%。在企业招聘的职位中,有52。8%的职位要求求职者最低学历为硕士,AI领域的求职者中有55。4%的人学历在硕士及以上,高学历已成为进行... -
大屏数据可视化设计指南
2019-01-03 14:25:31有多个信号源时,就会有多个设计稿,此时每个设计稿的尺寸即对应信号源电脑屏幕的分辨率。 一般情况下设计稿的分辨率就是电脑的分辨率,当有多个信号源时,有时会通过显卡自定义电脑屏幕分辨率,从而使电脑显示... -
电脑屏幕小软件显示不全
2021-07-27 01:22:24电脑屏幕太小,软件窗口显示不完整,往边上拉也拉不动。怎么办啊?...你调屏幕是怎么调的啊,一般是屏幕下面有几个按键,在那里调 这个不是调分辨率,你分辨率是在电脑操作,要调的是屏幕本身,那屏幕不是有几个按键吗... -
多主机跨屏操作配置(windows、linux)——基于synergy、Mouse without Borders(无界鼠标)和FileZilla
2021-09-26 22:42:43很多同学在使用多个电脑进行协同办公时,可能会遇到不同主机间的操作切换麻烦或者文件传输困难问题。对于多台主机,想要实现对主机的操作需要给每个主机配置一套鼠标和键盘,切换起来十分麻烦。此外,由于工作的需要... -
解决IDEA中多个项目不在同一窗口下显示的问题(操作简单)
2018-12-08 20:11:14今天博主在使用IDEA软件做练习的时候,想要重新new一个项目,一系列流程走完之后发现new的新项目出来了,但是之前的项目却不见了,或者在另外一个窗口,这个和eclipse不同,显示不太符合大家的编程习惯,网上搜索了一些资料... -
西门子人机界面(触摸屏HMI)与虚拟仿真应用技术
2021-07-24 03:29:12汽车制造业中有一项皇冠顶级的技术就是仿真,正是有了仿真...虚拟仿真技术的开发与应用,极大的降低了学习的成本,使得更多的电气编程技术爱好者能低成本学习技术。本篇所写虚拟仿真西门子设备可编程控制器为PLC[CP... -
软件测试笔试面试题目完全汇总
2019-03-06 13:29:371、软件测试的流程 2、web测试和APP测试的区别 仅仅从功能测试的层面上来讲的话,在流程和功能测试上是没有区别的。那么区别在哪里呢? 由于载体不一样,所以系统测试和一些细节可能会不一样。 那么我们就要先... -
qml实现离屏渲染视频(多线程渲染)
2018-04-23 23:20:19先看一个效果吧,由于这个抓图软件只有7.5fps,所以看其来很卡,但真实的程序运行起来比这个流畅多了。不能上传mp4,所以就弄了gif 我用的是Nvidia的硬解码SDK,并在其中加入了ffmpeg拉流或视频。解码出来的图片... -
2019年wine QQ最完美解决方案(多Linux发行版通过测试并稳定运行)
2019-01-22 11:40:04腾讯官方早就在10年代初就停止运营Linux版QQ,然而民间折腾Linux版QQ的脚步从来没停过。时至今日,它总算有了完美无暇的方案——deepin wine系列。...初始软件来源:deepin 兼容发行版:Ubuntu 16.... -
使用Keil MDK运行第一个STM32程序
2018-08-06 12:19:33使用Keil MDK运行第一个STM32程序 emouse原创文章,转载请注明出处 http://www.cnblogs.com/emouse/ 应部分网友要求,最新加入固件库以及开发环境 使用 入门视频教程,同时提供例程模板,个人录制,欢迎指正。...