Android16 SystemUI 屏幕录制功能优化
2026-07-04 / 龙之叶
1. 概述
针对 Android SystemUI 中的屏幕录制(Screen Record)功能进行了两项行为优化:
- 默认录制范围:将屏幕录制权限弹窗的默认选中项从「单个应用」改为「整个屏幕」。
- 锁屏续录:修改系统属性默认值,使屏幕录制在用户锁屏后不会自动停止。
这两项改动提升了屏幕录制的易用性,减少了用户每次录制时的额外操作,并满足在锁屏场景下持续录制的业务需求。
2. 修改背景与需求
2.1 问题描述
| 序号 | 修改前行为 | 用户影响 |
|---|---|---|
| 1 | 打开屏幕录制时,默认选中「单个应用」模式 | 大多数用户实际需要录制全屏内容,每次需手动切换选项 |
| 2 | 用户锁屏或息屏后,录制自动停止 | 无法在锁屏后继续录制,影响特定场景(如后台演示、长时间录制) |
2.2 优化目标
- 降低屏幕录制的操作门槛,默认即满足最常见的全屏录制需求。
- 锁屏不中断录制,提升录制连续性与灵活性。
- 保持通过系统属性可配置的能力,便于后续按需回退或定制。
3. 修改内容详解
3.1 修改文件清单
1 | frameworks/base/packages/SystemUI/src/com/android/systemui/screenrecord/ |
3.2 变更一:默认录制模式改为「整个屏幕」
文件:frameworks/base/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegate.kt
修改说明:
- 新增
ENTIRE_SCREEN常量导入。 - 将
defaultSelectedMode参数从SINGLE_APP改为ENTIRE_SCREEN。
代码对比:
1 | +import com.android.systemui.mediaprojection.permission.ENTIRE_SCREEN |
技术原理:
ScreenRecordPermissionDialogDelegate 继承自 BaseMediaProjectionPermissionDialogDelegate,在创建屏幕录制权限弹窗时,defaultSelectedMode 决定了单选列表的初始选中项。可选模式包括:
| 常量 | 含义 |
|---|---|
SINGLE_APP |
录制单个应用 |
ENTIRE_SCREEN |
录制整个屏幕 |
修改后,用户打开屏幕录制入口时,弹窗将默认高亮「整个屏幕」选项,用户可直接点击「开始」而无需额外切换。
3.3 变更二:锁屏不停止录制
文件:frameworks/base/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java
修改说明:
- 将系统属性
sysui.screenrecord.screenoff.enable的默认值从false改为true。
代码对比:
1 | - boolean enableScreenoff = SystemProperties.getBoolean("sysui.screenrecord.screenoff.enable", false); |
技术原理:
RecordingService 在启动时会根据 enableScreenoff 决定是否注册锁屏/息屏相关的广播监听:
1 | IntentFilter intentFilter = new IntentFilter(); |
enableScreenoff 值 |
行为 |
|---|---|
false(修改前默认) |
注册 ACTION_SCREEN_OFF 等广播,锁屏/息屏时停止录制 |
true(修改后默认) |
不注册锁屏相关广播,录制在锁屏后继续 |
注意:
ACTION_SHUTDOWN(关机/重启)的广播监听仍然保留,关机或重启时录制仍会正常停止,符合预期安全行为。
4. 效果对比
4.1 默认录制模式
动态对比(GIF)

静态对比
| 修改前 | 修改后 |
|---|---|
![]() |
![]() |
| 弹窗默认选中「单个应用」 | 弹窗默认选中「整个屏幕」 |
4.2 锁屏录制行为
动态对比(GIF)

静态对比
| 修改前 | 修改后 |
|---|---|
![]() |
![]() |
| 锁屏后录制指示器消失,录制停止 | 锁屏后录制指示器保持,录制继续 |
4.3 锁屏行为流程图

5. 系统属性配置
如需在运行时覆盖默认行为,可通过 adb 设置系统属性:
1 | # 启用锁屏续录(与 Patch 修改后默认行为一致) |
属性修改后需重启 SystemUI 或重新发起录制方可生效:
1 adb shell killall com.android.systemui
本文链接:
http://longzhiye.top/2026/07/04/2026-07-04/



