4

使用scrcpy技术实现同屏协作的功能

 1 year ago
source link: https://blog.p2hp.com/archives/10828
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

使用scrcpy技术实现同屏协作的功能 | Lenix Blog

之前在华为平板上体验了“同屏协作”的功能,可以直接投射手机屏幕到华为平板上,实现多设备共享微信内容,非常方便。

但是华为的同屏协作仅限于华为平板和华为手机之间,今天发现了scrcpy这个工具,可以在Linux下实现同样的功能。(严重怀疑华为同屏协作也是用scrcpy实现的,哈哈哈哈)

scrcpy这个工具可以通过USB(或TCP/IP)连接用于显示或控制安卓设备, 并且不需要手机获取 root 权限。

它的特点主要有:

  • 轻量 (原生,仅显示设备屏幕)
  • 性能 (30~60fps)
  • 质量 (分辨率可达1920x1080或更高)
  • 低延迟 (35-70ms)
  • 快速启动 (数秒内即能开始显示)
  • 无侵入性 (不需要在安卓设备上安装任何程序)

折腾scrcpy还是比较曲折的,下面是折腾经历分享:

安装必要的工具

sudo pacman -S scrcpy adb

打开手机的ADB网络调试功能

  1. 手机中搜索 “开发者选项”, 找到“USB调试”选项,点击开启;
  2. 手机链接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+点按并移动鼠标

¹双击黑色边界以关闭黑色边界

²点击鼠标右键将在屏幕熄灭时点亮屏幕,其余情况则视为按下 返回键 。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK