scrcpy之将Android手机投屏到Linux电脑实践
参考:https://zhuanlan.zhihu.com/p/366378837
A 安装与USB投屏
- 电脑端安装投屏程序
sudo apt install -y scrcpy
-
手机端设置
手机端无需安装任何软件,只需开启【开发者选项】-【USB调试】及相关选项,比如我开启了【USB调试、USB调试(安全设置)、无线调试、USB安装】
开启【USB调试】相关选项后,用USB数据线连接电脑与手机,设置连接模式为【传输照片(PTP)】 -
电脑端启动投屏程序投屏
$ scrcpy
这样就可以在电脑上看到手机屏幕了
B 一些命令
adb shell xxx #--- 相当于在手机上运行shell命令【xxx】
adb shell ls /data #--- 查看手机中的root根目录,如果手机未root,则无权限打开
adb shell ls /storage/emulated/0 #--- 查看手机中的文件管理器根目录
adb shell ip route | awk '{print $9}' #--- 查看手机ip
adb shell ss -tnl #--- 查看手机监听端口
adb tcpip 6666 #--- 修改手机监听端口为【6666】
adb connect 192.168.2.16:6666 #--- 通过网络连接到手机
adb devices #--- 查看设备列表
# adb 命令很强大,请自行百度
scrcky #--- 将手机屏幕投屏到电脑屏幕
C 命令演示
^_^ kevin@TM1701-b38cbc23:~$ adb shell ls /data #--- 未root,则无权限
ls: /data: Permission denied
^_^ kevin@TM1701-b38cbc23:~$ adb shell ls /storage/emulated/0
好多文件
^_^ kevin@TM1701-b38cbc23:~$ adb shell ip route | awk '{print $9}'
10.23.13.111
192.168.2.16
^_^ kevin@TM1701-b38cbc23:~$ adb devices
List of devices attached
90e714b7 device
192.168.2.16:6666 device
D 通过wifi网络投屏
准备工作:
确保可以通过USB投屏后,将手机与电脑连接到同一个局域网的wifi,并设置手机开启【开发者选项】-【无线调试】,将【开发者选项】-【默认USB配置】改为【传输照片(PTP)】,改为【传输文件(MTP)】方式也行。
192.168.2.16 是我手机连接到WiFi时的IP地址
下面的步骤更多是让你知道原理
1 查看当前监听端口列表
^_^ kevin@TM1701-b38cbc23:~$ adb shell ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
Cannot open netlink socket: Permission denied
LISTEN 0 0 0.0.0.0:18154 0.0.0.0:*
LISTEN 0 0 0.0.0.0:15552 0.0.0.0:*
LISTEN 0 0 *:61593 *:*
LISTEN 0 0 *:42917 *:*
LISTEN 0 0 [::ffff:127.0.0.1]:38781 *:*
LISTEN 0 0 [::ffff:127.0.0.1]:37479 *:*
LISTEN 0 0 [::ffff:127.0.0.1]:40457 *:*
2 修改手机监听端口为【6666】,这样容易记
^_^ kevin@TM1701-b38cbc23:~$ adb tcpip 6666 #--- 修改手机监听端口为【6666】
restarting in TCP mode port: 6666
3 查看修改后的监听端口列表
^_^ kevin@TM1701-b38cbc23:~$ adb shell ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
Cannot open netlink socket: Permission denied
LISTEN 0 0 0.0.0.0:18154 0.0.0.0:*
LISTEN 0 0 0.0.0.0:15552 0.0.0.0:*
LISTEN 0 0 *:61593 *:*
LISTEN 0 0 *:6666 *:*
LISTEN 0 0 *:37583 *:*
LISTEN 0 0 [::ffff:127.0.0.1]:38781 *:*
LISTEN 0 0 [::ffff:127.0.0.1]:37479 *:*
LISTEN 0 0 [::ffff:127.0.0.1]:40457 *:*
# 这里可以看到监听端口已经改(增加)为【6666】
# 【37583】这个可以从开发者选项-无线调试那里看到,干啥用的? 和【6666】啥关系
4 adb程序通过网络连接到手机
^_^ kevin@TM1701-b38cbc23:~$ adb connect 192.168.2.16:6666
already connected to 192.168.2.16:6666
# 或者:
^_^ kevin@TM1701-b38cbc23:~$ adb connect 192.168.2.16:37583
already connected to 192.168.2.16:37583
# 可以看到【37583】和【6666】这两个都可以连接,【37583】这个端口是随机,每次启动端口都不一样;【6666】这个增加的,一次修改,永久有效
5 重新投屏
拔掉SUB数据线,电脑端运行投屏程序即可:
^_^ kevin@TM1701-b38cbc23:~$ scrcpy
每次投屏前,先运行adb connect 192.168.2.16:6666
,然后启动scrcpy
即可。
如果需要重新使用USB数据线连接,需要先断开adb
连接,方法是:
O_O kevin@TM1701-b38cbc23:~$ adb disconnect
disconnected everything`
上个图:
6 异常处理
- 错误1:
如果【开发者选项】-【默认USB配置】不是【传输照片(PTP)】或【传输文件(MTP)】传输方式,启动scrcpy会出现以下错误:
^_^ kevin@TM1701-b38cbc23:~$ scrcpy
INFO: scrcpy 1.12.1 <https://github.com/Genymobile/scrcpy>
adb: error: failed to get feature set: no devices/emulators found
ERROR: "adb push" returned with value 1
- 错误2:
^_^ kevin@TM1701-b38cbc23:~$ scrcpy
INFO: scrcpy 1.12.1 <https://github.com/Genymobile/scrcpy>
adb: error: failed to get feature set: more than one device/emulator
ERROR: "adb push" returned with value 1
你可能有多个多个设备供选择,查看可供选择的设备列表:
^_^ kevin@TM1701-b38cbc23:~$ adb devices
List of devices attached
90e714b7 device
192.168.2.16:6666 device
断开USB数据线,或运行adb disconnect
断开网络连接,就可以了
- 错误3:
unable to connect to 192.168.2.16:6666: Connection refused
可能:
A、手机的IP变了,修正IP即可;
B、你的手机重启启动了,他会自动关闭【开发者选项】-【无线调试】。重新开启后,还需重新设置监听端口【6666】
最后
文章来源:https://www.toymoban.com/news/detail-493099.html
爱你!文章来源地址https://www.toymoban.com/news/detail-493099.html
到了这里,关于scrcpy之将Android手机投屏到Linux电脑实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!