Ubuntu安卓手机投屏

之前还在用windows的时候,360有自带的手机管家可以将手机屏幕投放在电脑屏幕上,而切了Ubuntu之后,这个需求就一直无法实现。

其实解决方案很简单,只需要使用scrcpy框架就可以了,然而如果按照"Ubuntu","安卓手机投屏"这几个关键词去搜,搜出来的往往是不够实用或者是无关的信息,我也是偶然看到微信公众号的推送才知道有这个神器的,用它不仅仅可以实现投屏,甚至可以在电脑上操作手机,结合图像识别与模拟鼠标就可以做一些很有趣的东西出来。

项目地址:https://github.com/Genymobile/scrcpy
教程没有提ADB的安装,我也不知道是因为构建的时候包含ADB还是因为我之前安装过ADB所以没有遇到问题,如果有遇到问题的可以考虑一下是不是没有安装ADB

一、安装

首先需要安装几个必要的依赖:

# runtime dependencies
sudo apt install ffmpeg libsdl2-2.0-0

# client build dependencies
sudo apt install make gcc git pkg-config meson ninja-build \
                 libavcodec-dev libavformat-dev libavutil-dev \
                 libsdl2-dev

# server build dependencies
sudo apt install openjdk-8-jdk

在比较老的Ubuntu版本,如16.04,需要用如下方式来安装meson

sudo apt install python3-pip
pip3 install meson

这里我们使用已经编译好的server,官网教程中也提供了自己编译server的方式,不过这里没有采用,官网教程是:https://github.com/Genymobile/scrcpy/blob/master/BUILD.md

这里我们下载它编译好的jar包:

wget https://github.com/Genymobile/scrcpy/releases/download/v1.9/scrcpy-server-v1.9.jar

如图:

[外链图片转存失败(img-doZrutXk-1562342565921)(./1.png)]

下一步需要克隆整个项目并进入项目目录

git clone https://github.com/Genymobile/scrcpy
cd scrcpy

然后构建项目:

meson x --buildtype release --strip -Db_lto=true
cd x
ninja

[外链图片转存失败(img-vaXZ1YVE-1562342565924)(./2.png)]

这里在运行ninja命令的时候会报错,查看报错内容发现是构建server时出错:

[外链图片转存失败(img-NqOyPMAS-1562342565927)(./3.png)]

不过这不重要,因为之前已经下好了编译好的server。

接下来需要把之前下好的scrcpy-server-v1.9.jar重命名为scrcpy-server.jar并移动到scrcpy/x/server目录下,否则一会运行会报如下错误:

[外链图片转存失败(img-0KBNZX1M-1562342565928)(./4.png)]

二、利用USB调试模式运行

首先连接手机,然后打开USB调试,之后进入scrcpy目录下,可以看到当前目录下有可执行文件run:

[外链图片转存失败(img-5RyoPS0f-1562342565930)(./5.png)]

接下来利用如下命令运行即可:

./run x

运行之后,就可以看到手机界面出现在了电脑屏幕上,这个界面是可以交互的,在这里的操作会同步到手机上:

[外链图片转存失败(img-2XydZ8Eh-1562342565932)(./6.png)]

到这里,我们已经实现了使用USB模式来进行投屏了。

启动时还有很多可选参数,这里可以参考这篇博客,我觉得已经很细致了:

scrcpy - Android无需ROOT的跨平台投屏工具

三、利用无线模式运行

当我以为这个神器已经很NB的时候,对面宿舍的兄弟告诉我他发现这玩意还能无线投屏,只要知道手机的IP地址就能够实现这个功能。折腾了半个多小时之后,我们成功实现了无线投屏功能。

首先需要知道手机的IP地址,这里为了确保电脑能够连接到手机,我用电脑开了一个WIFI,怎么开WIFI可以参考一下这篇博客:信息安全实验:实现一个fake-wifi

手机连接到和电脑相同WiFi之后,就需要找到手机IP了,具体方法每个手机可能不一样吧,我这里华为荣耀4找到高级WLAN设置就能看到IP了(实在不行可以10.42.0.X一个一个ping)。

[外链图片转存失败(img-0ZGs6Wd0-1562342565933)(./7.png)]

可以从电脑ping一下,可以看到是可以ping通的:

[外链图片转存失败(img-KZYR986b-1562342565935)(./8.png)]

前期准备做好了,下一步就是正式的链接了,通过多次的实验验证,我们找到了正确的启动顺序:

1.连接数据线
2.允许USB调试
3.连接电脑相同WIFI
4.找到手机IP

这几步在之前说过了,接下来就是关键步骤

5.

adb tcpip 5555

这样将在手机上开启5555端口:

[外链图片转存失败(img-EEXLhuwf-1562342565935)(./9.png)]

执行这步的时候记得在手机上点击下"确定"。

6.

adb connect 10.42.0.78:5555

依然要在手机上点击"确定"。

此时通过adb devices可以看到adb列表中已经出现了新的设备:

[外链图片转存失败(img-eSzvMHBx-1562342565936)(./10.png)]

7.

拔掉数据线。

8.

adb reconnect offline

这条命令将会强制未授权的设备重新链接。

9.

adb connect 10.42.0.78:5555

最后重新连接一波。

此时再查看所有设备:

[外链图片转存失败(img-XaXXrMak-1562342565937)(./11.png)]

可以看到已经授权成功。

此时可以利用run x再次运行投屏了:

[外链图片转存失败(img-HpomRgd1-1562342565939)(./13.png)]

[外链图片转存失败(img-N8HiTdyn-1562342565940)(./14.png)]

无线投屏的延迟肯定是有的,不过亲测利用手机在四米之内开摄像头传输图像基本上没有延迟,,此时的画面延迟主要是手机性能造成的。

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值