FGA 截屏捕获失败:MediaProjection 授权与黑屏问题排查
症状
FGA 启动后:
- 悬浮按钮弹出但脚本点了没反应
- FGA 日志里提示"Screenshot failed"或"MediaProjection error"
- 能看到悬浮按钮但脚本不执行任何操作
- 偶尔能工作偶尔不行
按优先级排查
检查 1:MediaProjection 权限是否已授权
最常见的原因——FGA 服务启动时需要用户手动授权 MediaProjection:
- FGA 主界面 → 点"停止服务"
- 点"启动服务"
- 弹出"开始截取屏幕"对话框 → 必须点"立即开始"
- 授权后服务才会有截屏能力
检查 2:Android 14+ 每次都要重新授权
这是 Android 14 的安全改进——MediaProjection token 不能缓存,每次启动服务都要手动点一次"立即开始"。
- 如果你是 Android 14+,每次启动 FGA 服务都会要求重新确认 MediaProjection
- 这是正常行为,不是 bug
- 解决不了(Google 强制的)
检查 3:有没有其他录屏应用占用 MediaProjection
MediaProjection 同一时间只能被一个应用使用:
- 如果你开着其他录屏应用(比如手机自带录屏、AZ Screen Recorder、Mobizen 等)
- FGA 就拿不到 MediaProjection
解决:关掉所有其他录屏应用 → 重启 FGA 服务。
检查 4:FGO 的防截屏机制
某些游戏会防止被截屏(安全屏遮罩),截屏会得到 黑屏。
FGO 默认没有防截屏,但如果你的 FGO 开启了什么安全功能,可能会导致黑屏。
解决:在 FGO 里关闭"安全模式"或类似功能;如果 FGO 不支持关闭 → 只能在 root 设备上用 root 截屏模式绕过。
检查 5:设备分辨率适配问题
极少数高分辨率设备(4K+、2K 平板)可能出现截屏失败:
- MediaProjection 输出分辨率太高 → FGA 处理不过来
- 虚拟显示器创建失败
解决:
- FGA 设置 → 截屏方式 → 如果设备已 root → 切到 Root 截屏
- 降低 FGO 的分辨率设置(如果有的话)
- 把设备的屏幕分辨率调到推荐值
检查 6:FGO 在分屏 / 小窗模式
FGA 的截屏和识别基于 FGO 全屏运行:
- 分屏模式下 FGO 画面只有半屏 → FGA 可能识别不准
- 小窗模式类似
解决:把 FGO 拉到全屏运行。
检查 7:厂商 ROM 对 MediaProjection 的限制
| 厂商 | 问题 | 解决 |
|---|---|---|
| 三星(One UI 6+) | MediaProjection 可能被系统限制 | FGA 设置里开"Debug 模式" → 重启服务 → 看日志 |
| 小米(MIUI 14+) | 某些版本 MediaProjection 偶尔失效 | 重启手机后重试 |
| 华为(HarmonyOS 4+) | 可能需要额外授权 | 设置 → 应用 → FGA → 所有权限开启 |
截黑屏的特殊排查
症状
FGA 能截屏,但截出来是全黑的。
原因 1:游戏画面在安全层(Secure Layer)
某些游戏把画面渲染在 Android 的 Secure Layer 上(DRM 保护),普通 MediaProjection 截不到。
FGO 正常情况下不会用 Secure Layer——但某些服务器版本或某些活动可能会。
原因 2:手机的"智能保护"或"隐私保护"
部分厂商有屏幕保护功能,阻止其他应用截屏:
- 华为:智能保护 → 隐私保护 → 把 FGO 设为可截屏
- 小米:屏幕保护 → 关闭"保护隐私"模式
原因 3:Root 截屏模式
如果设备已 root,在 FGA 设置里切到 Root 截屏——root 模式可以绕过大多数防截屏机制。
MediaProjection vs Root 截屏
| 对比 | MediaProjection | Root 截屏 |
|---|---|---|
| 前提 | 不需要 root | 需要 root |
| 速度 | 较慢(50~100ms/帧) | 更快(10~30ms/帧) |
| 稳定性 | 可能被系统限制 | 更稳定 |
| Android 14 | 每次都要确认 | 不受影响 |
| 能否绕过防截屏 | 不能 | 大多数情况可以 |
切换 Root 截屏的步骤(已 root 设备)
- FGA 设置 → 截屏方式
- 选择 "Root Screenshot"
- FGA 请求 root 权限 → 允许
- 重启 FGA 服务
- 测试截屏是否正常
MediaProjection token 失效
症状
FGA 服务启动正常,但几分钟后突然截屏失败。
原因
MediaProjection token 可能自动失效(某些 Android 版本的 bug)。
解决
- FGA 设置 → 截屏方式 → 如果设备已 root → 切到 Root 截屏(根治)
- 或者重新授权 MediaProjection(重启服务)
快速验证 checklist
✅ MediaProjection 已授权?(启动服务时点了"立即开始")
✅ 没其他录屏应用占用?
✅ FGO 全屏运行?
✅ FGO 没有防截屏机制?
✅ 设备分辨率是正常的?
✅ 如果已 root → 试试 Root 截屏?
✅ 厂商 ROM 没限制 MediaProjection?
常见误区
| 误区 | 实际 |
|---|---|
| "MediaProjection 授权一次就够了" | Android 14+ 每次启动服务都要重新授权 |
| "其他录屏应用关了就好" | 有时候后台还在运行 → 强制关闭或卸载 |
| "Root 截屏只有 root 设备能用" | 是的,但 root 设备上强烈推荐用 root 截屏 |