Escrcpy 设备控制完全指南:scrcpy 设备操作命令与 Android 设置项深入解析
【免费下载链接】escrcpy📱 Display and control your Android device graphically with scrcpy.项目地址: https://gitcode.com/GitHub_Trending/es/escrcpy
本指南以 docs/zhHans/reference/scrcpy/device.md 为骨架,系统讲解 scrcpy 运行时对 Android 设备本身的控制能力——保持唤醒、屏幕超时、关屏、触摸痕迹、断电/通电策略以及启动指定应用等。文中所有命令均可直接在装有 scrcpy 的终端中运行,同时结合 Escrcpy(本项目)的偏好设置模型与源码实现,说明这些参数在图形化客户端中的对应关系与底层生效原理。读完本文,你将掌握 scrcpy 全部设备级参数的使用方法、单位与取值细节、与
adb shell settings的手动操作对应关系,以及 Escrcpy 中如何通过界面配置这些参数。
概述:什么是"设备控制"参数
scrcpy 的大多数命令行参数用于控制镜像本身(分辨率、编码、窗口等),但还有一类参数会对设备本身执行操作——例如修改系统设置、开关屏幕、启动应用。它们的特点是:scrcpy 在启动时应用修改,在退出时尽可能恢复设备的初始状态,从而保证"用完即走、不留痕迹"。
在 Escrcpy 中,这些参数被抽象为 设备(device)偏好模型 下的若干配置项,界面配置后会由 偏好存储的scrcpyParameter方法 拼接为最终的 scrcpy 命令行参数。下文逐一讲解每个参数。
保持唤醒(--stay-awake / -w)
当设备通过有线连接时,防止设备延迟休眠:
scrcpy --stay-awake scrcpy -w # 简写形式- 关闭 scrcpy 时恢复设备的初始状态;
- 如果设备未通过有线连接(即仅通过 TCP/IP 无线连接),
--stay-awake无效——这是 Android 系统的特性(休眠策略仅对有电充电场景生效); - 该功能通过修改 Android 全局设置项
stay_on_while_plugged_in实现,可手动调整:
# 获取当前 stay_on_while_plugged_in 值 adb shell settings get global stay_on_while_plugged_in # 为 AC / USB / 无线充电器启用保持唤醒 adb shell settings put global stay_on_while_plugged_in 7 # 禁用保持唤醒 adb shell settings put global stay_on_while_plugged_in 0取值为位标志:1 表示 AC 供电,2 表示 USB,4 表示无线充电,7 = 1+2+4 即三种供电方式全部启用。
在 Escrcpy 的偏好设置中,该参数对应设备分类下的"保持唤醒"开关(stayAwake,字段--stay-awake,类型Switch)。本地化文案特别注明:"仅有线方式连接时有效"(见 zh-CN.json),与上述 Android 特性保持一致。
屏幕关闭超时(--screen-off-timeout)
Android 屏幕会在一定延迟后自动关闭,scrcpy 可在运行时修改该延迟:
scrcpy --screen-off-timeout=300 # 300秒(5分钟)退出时恢复原始值。也可手动修改:
# 获取当前 screen_off_timeout 值 adb shell settings get system screen_off_timeout # 设置新值(单位毫秒) adb shell settings put system screen_off_timeout 30000单位陷阱需特别注意:Android 系统值(screen_off_timeout)的单位是毫秒,而 scrcpy 命令行参数的单位是秒。
在 Escrcpy 中对应"屏幕超时"配置项(screenOffTimeout,字段--screen-off-timeout,类型InputNumber),界面上的追加单位显示为s(秒),提示文案为"修改屏幕关闭超时设置,并在退出时恢复设备默认",占位符为"设备默认",即不设置时沿用设备自身值。
关闭屏幕(--turn-screen-off / -S)
在镜像开始时通过命令行关闭设备屏幕:
scrcpy --turn-screen-off scrcpy -S # 简写形式也可随时通过快捷键操作(完整列表见 快捷键文档):
- MOD+o:关闭设备屏幕(保持镜像);
- MOD+Shift+o:重新打开屏幕。
需要了解的行为细节:
- 在 Android 设备上,物理
POWER键总是会唤醒屏幕; - 通过 scrcpy 发送
POWER指令(右键点击或MOD+p)会强制在一小段延迟后关闭屏幕(尽力而为),物理POWER键仍会唤醒屏幕。
此功能也可与保持唤醒组合,用于"关屏不息屏"的长时间任务场景:
scrcpy --turn-screen-off --stay-awake scrcpy -Sw # 简写形式从Android 15开始,可手动通过cmd display控制主显示屏电源:
# 关闭屏幕(0表示主显示屏) adb shell cmd display power-off 0 # 打开屏幕 adb shell cmd display power-on 0Escrcpy 中对应"控制时关闭屏幕"开关(turnScreenOff,字段--turn-screen-off);此外在控制工具栏中还有独立的"关闭屏幕"快捷操作(界面文案"关闭屏幕且保持控制",见 zh-CN.json),配合镜像窗口的"旋转"按钮等同属设备控制动作。
显示触摸痕迹(--show-touches / -t)
做演示时,在物理设备上显示触摸痕迹非常有用。Android 开发者选项中自带此功能,scrcpy 提供启动时启用、退出时恢复初始值的选项:
scrcpy --show-touches scrcpy -t # 简写形式注意:此功能仅显示物理触摸痕迹(手指在设备上的触摸),scrcpy 注入的虚拟触摸不会显示。可手动修改:
# 获取当前 show_touches 值 adb shell settings get system show_touches # 启用 show_touches adb shell settings put system show_touches 1 # 禁用 show_touches adb shell settings put system show_touches 0Escrcpy 中对应"展示触摸点"开关(showTouches,字段--show-touches),提示文案为"开启后将激活开发者选项中的显示点按触摸反馈"与"仅在物理设备上展示"。
关闭时断电(--power-off-on-close)
在关闭 scrcpy 时同时关闭设备屏幕:
scrcpy --power-off-on-closeEscrcpy 中对应"控制结束关闭屏幕"开关(powerOffOnClose,字段--power-off-on-close),提示文案为"开启后停止控制设备将自动关闭设备屏幕"。
启动时通电(--no-power-on)
默认情况下,启动 scrcpy 会唤醒设备。如需禁用此行为:
scrcpy --no-power-onEscrcpy 中对应"控制时禁用自动亮屏"开关(noPowerOn,字段--no-power-on),提示"开启后控制设备时将禁用自动亮屏"。此外偏好模型中还包含--keep-active(保持活跃)开关,其作用是在设备空闲时周期性向系统发送用户活动信号,防止设备因不活动而关闭——它与"保持唤醒"配合可覆盖更多长连接场景。
启动 Android 应用(--list-apps / --start-app)
列出设备应用
scrcpy --list-apps该命令输出设备上安装的应用列表。在 Escrcpy 中,这一能力被封装为 scrcpy 中间件的getAppList方法——见 desktop/electron/middleware/scrcpy/index.js,它执行scrcpy --serial="<序列号>" --list-apps并通过parseScrcpyAppList解析输出。
启动指定应用
通过包名在启动时运行指定应用:
scrcpy --start-app=org.mozilla.firefox此功能尤其适合配合虚拟显示器使用——在一个独立的虚拟显示中直接启动应用,与设备主屏幕分离:
scrcpy --new-display=1920x1080 --start-app=org.videolan.vlc--start-app的值支持三种形态:
| 前缀 | 含义 | 示例 |
|---|---|---|
| 无 | 直接指定包名(推荐,最快) | --start-app=org.mozilla.firefox |
+ | 启动前先强制停止该应用 | --start-app=+org.mozilla.firefox |
? | 按应用名称检索后启动 | --start-app=?firefox |
两个前缀可组合使用(按此顺序):
scrcpy --start-app=+?firefox说明:通过
?按应用名称检索可能需要几秒(需要遍历应用列表),因此官方建议直接使用包名。
Escrcpy 中的实现视角
在 Escrcpy 中,应用启动流程由 use-start-app hook 承载,其核心流程与上述命令行完全对应:
resolveScrcpyRuntime合并设备配置与启动配置,通过scrcpyParameter生成命令参数(store/preference/index.js)——false、null、undefined、空字符串等值会被剔除,不进入最终命令行;- 需要新建虚拟显示时,解析
--new-display尺寸与横竖屏参数(landscape会交换宽高或追加横屏标志); - 中间件
launch(desktop/electron/middleware/scrcpy/index.js)在拼接命令时追加--new-display=<尺寸>与--start-app=<包名>,并通过就绪正则New display:.+?(id=(\d+))捕获新虚拟显示的 display id 作为返回值; - 对于多用户(work profile / secondary user)场景,
openSecondaryUserApp会改用adb shell am start-activity --user <userId> --display <displayId> -n <组件名>的方式在指定用户与指定显示上拉起应用,再启动镜像进程。
在 Escrcpy 中配置这些参数
上述全部设备参数在 Escrcpy 的偏好设置界面中均可直接配置,模型定义见 desktop/src/models/preference/device/index.js,汇总如下:
| 界面配置项 | 命令字段 | 控件类型 | 界面提示(zh-CN) |
|---|---|---|---|
| 屏幕超时 | --screen-off-timeout | InputNumber(单位 s) | 修改屏幕关闭超时设置,并在退出时恢复设备默认 |
| 保持唤醒 | --stay-awake | Switch | 仅有线方式连接时有效 |
| 保持活跃 | --keep-active | Switch | 防止设备因不活动而关闭,将定期向系统发出用户活动信号 |
| 控制时关闭屏幕 | --turn-screen-off | Switch | 开启后控制设备时将自动关闭设备屏幕 |
| 控制结束关闭屏幕 | --power-off-on-close | Switch | 开启后停止控制设备将自动关闭设备屏幕 |
| 控制时禁用自动亮屏 | --no-power-on | Switch | 开启后控制设备时将禁用自动亮屏 |
| 展示触摸点 | --show-touches | Switch | 仅在物理设备上展示 |
配置后的生成逻辑由scrcpyParameter完成:所有开关型参数仅在开启(非false)时才会进入命令行,数值型(如屏幕超时)在未设置时留空以沿用设备默认;此外偏好模型还支持scrcpyAppend追加字段,允许高级用户手动补充任意 scrcpy 参数,为上述标准选项之外的场景留出扩展空间。
小结
scrcpy 的设备控制参数是一组"启动时修改、退出时恢复"的轻量设备操作能力,覆盖保持唤醒、屏幕超时、关屏/亮屏、触摸痕迹、断电策略与启动应用六大场景。使用时需重点留意三点:--stay-awake仅对有线连接有效、--screen-off-timeout与 Android 系统值存在秒/毫秒单位差异、--start-app的+/?前缀语义。在 Escrcpy 中,这些能力全部映射为图形化偏好项,由 偏好存储 统一拼接为命令行参数,并经 scrcpy 中间件 执行——既保留了命令行方式的全部灵活性,又提供了零门槛的界面入口。
【免费下载链接】escrcpy📱 Display and control your Android device graphically with scrcpy.项目地址: https://gitcode.com/GitHub_Trending/es/escrcpy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考