之前在华为平板上体验了“同屏协作”的功能,可以直接投射手机屏幕到华为平板上,实现多设备共享微信内容,非常方便。
但是华为的同屏协作仅限于华为平板和华为手机之间,今天发现了scrcpy这个工具,可以在Linux下实现同样的功能。(严重怀疑华为同屏协作也是用scrcpy实现的,哈哈哈哈)
scrcpy这个工具可以通过USB(或TCP/IP)连接用于显示或控制安卓设备, 并且不需要手机获取 root 权限。
它的特点主要有:
- 轻量 (原生,仅显示设备屏幕)
- 性能 (30~60fps)
- 质量 (分辨率可达1920x1080或更高)
- 低延迟 (35-70ms)
- 快速启动 (数秒内即能开始显示)
- 无侵入性 (不需要在安卓设备上安装任何程序)
折腾scrcpy还是比较曲折的,下面是折腾经历分享:
安装必要的工具
sudo pacman -S scrcpy adb
打开手机的ADB网络调试功能
- 手机中搜索 “开发者选项”, 找到“USB调试”选项,点击开启;
- 手机链接USB数据线(仅第一次需要),在链接选项中选择 “打开文件” 菜单项,不能只选择 “仅充电”,要不是ADB无法连接到手机;
首次打开USB调试选项后连接手机,手机会弹出 “允许USB调试吗?” 的对话框,选择确定。
设置ADB TCP端口
手机链接到电脑后,使用以下命令来设置ADB的TCP链接端口号:
adb shell
setprop service.adb.tcp.port 5555
stop adbd
start adbd
exit
通过Wifi投屏
设置完ADB TCP端口后,就可以断开USB数据线,确保电脑和手机都连接到同一个Wifi网络后,查看手机的IP地址(可以点击Wifi列表名字或者下载 “网络信号信息” 工具查看)
使用下面的命令来投屏手机到电脑:
adb connect 192.168.x.x:5555
scrcpy
192.168.x.x 需要换成你手机的真实IP
在高铁的环境,可以直接用USB数据线的方式,直接使用scrcpy
命令即可。
缩小分辨率
默认的窗口使用了整个屏幕高,有时候操作不太方便,可以适当缩小一点:
scrcpy -m 1024
锁定屏幕朝向
可以使用如下命令锁定屏幕朝向:
scrcpy --lock-video-orientation 0 # 自然朝向
scrcpy --lock-video-orientation 1 # 90° 逆时针旋转
scrcpy --lock-video-orientation 2 # 180°
scrcpy --lock-video-orientation 3 # 90° 顺时针旋转
屏幕录制
可以在屏幕镜像的同时录制视频:
scrcpy --record file.mp4
scrcpy -r file.mkv
在不开启屏幕镜像的同时录制:
scrcpy --no-display --record file.mp4
scrcpy -Nr file.mkv
按Ctrl+C以停止录制。
多设备
如果多个设备在执行adb devices
后被列出,您必须指定设备的 序列号 :
scrcpy --serial 0123456789abcdef
scrcpy -s 0123456789abcdef # short version
如果设备是通过TCP/IP方式连接到电脑的:
scrcpy --serial 192.168.0.1:5555
scrcpy -s 192.168.0.1:5555 # short version
您可以同时启动多个 scrcpy 实例以同时显示多个设备的画面。
标题
窗口的标题默认为设备型号。您可以通过如下命令修改它:
scrcpy --window-title 'My device'
位置和大小
您可以指定初始的窗口位置和大小:
scrcpy --window-x 100 --window-y 100 --window-width 800 --window-height 600
无边框
关闭边框:
scrcpy --window-borderless
保持窗口在最前
您可以通过如下命令保持窗口在最前面:
scrcpy --always-on-top
全屏
您可以通过如下命令直接全屏启动scrcpy:
scrcpy --fullscreen
scrcpy -f # short version
全屏状态可以通过MOD+f实时改变。
保持常亮
防止设备在已连接的状态下休眠:
scrcpy --stay-awake
scrcpy -w
程序关闭后,设备设置会恢复原样。
关闭屏保
Scrcpy 不会默认关闭屏幕保护。
关闭屏幕保护:
scrcpy --disable-screensaver
旋转设备屏幕
使用MOD+r以在竖屏和横屏模式之间切换。
需要注意的是,只有在前台应用程序支持所要求的模式时,才会进行切换。
复制黏贴
每次Android的剪贴板变化的时候,它都会被自动同步到电脑的剪贴板上。
所有的 Ctrl 快捷键都会被转发至设备。其中:
- Ctrl+c 复制
- Ctrl+x 剪切
- Ctrl+v 黏贴 (在电脑到设备的剪贴板同步完成之后)
捏拉缩放
模拟 “捏拉缩放”:Ctrl+按住并移动鼠标。
更准确的说,您需要在按住Ctrl的同时按住并移动鼠标。 在鼠标左键松开之后,光标的任何操作都会相对于屏幕的中央进行。
具体来说, scrcpy 使用“虚拟手指”以在相对于屏幕中央相反的位置产生触摸事件。
安装APK
如果您要要安装APK,请拖放APK文件(文件名以.apk
结尾)到 scrcpy 窗口。
该操作在屏幕上不会出现任何变化,而会在控制台输出一条日志。
将文件推送至设备
如果您要推送文件到设备的 /sdcard/
,请拖放文件至(不能是APK文件)scrcpy 窗口。
该操作没有可见的响应,只会在控制台输出日志。
在启动时可以修改目标目录:
scrcpy --push-target /sdcard/foo/bar/
其他操作
操作 | 快捷键 |
---|---|
全屏 | MOD+f |
向左旋转屏幕 | MOD+← (左) |
向右旋转屏幕 | MOD+→ (右) |
将窗口大小重置为1:1 (像素优先) | MOD+g |
将窗口大小重置为消除黑边 | MOD+w | 双击¹ |
点按 主屏幕 |
MOD+h | 点击鼠标中键 |
点按 返回 |
MOD+b | 点击鼠标右键² |
点按 切换应用 |
MOD+s |
点按 菜单 (解锁屏幕) |
MOD+m |
点按 音量+ |
MOD+↑ (up) |
点按 音量- |
MOD+↓ (down) |
点按 电源 |
MOD+p |
打开屏幕 | 点击鼠标右键² |
关闭设备屏幕(但继续在电脑上显示) | MOD+o |
打开设备屏幕 | MOD+Shift+o |
旋转设备屏幕 | MOD+r |
展开通知面板 | MOD+n |
展开快捷操作 | MOD+Shift+n |
复制到剪贴板³ | MOD+c |
剪切到剪贴板³ | MOD+x |
同步剪贴板并黏贴³ | MOD+v |
导入电脑剪贴板文本 | MOD+Shift+v |
打开/关闭FPS显示(在 stdout) | MOD+i |
捏拉缩放 | Ctrl+点按并移动鼠标 |
¹双击黑色边界以关闭黑色边界
²点击鼠标右键将在屏幕熄灭时点亮屏幕,其余情况则视为按下 返回键 。