fga 中文文档 下载 App

FGA 截屏权限(MediaProjection):让 FGA 能"看到"游戏画面

为什么需要截屏权限

FGA 的自动化流程是:截屏 → 图像识别 → 执行点击/滑动 → 再截屏 → 再识别 → …… 循环往复。

如果不能截屏,FGA 就不知道当前游戏画面是什么(战斗中?菜单?助战选择?),也就无法决定下一步该点哪里。所以截屏是 FGA 一切自动化的起点。

FGA 的两种截屏方式

方式使用场景速度权限需求
MediaProjection 截屏默认方式,所有设备略慢(50~100ms/帧)需要用户每次启动服务时手动确认
Root 截屏可选,仅 root 设备更快(10~30ms/帧)一次性授权,无需每次确认

为什么默认用 MediaProjection

因为 MediaProjection 是 Android 官方 API,不需要 root,几乎所有设备都支持。Root 截屏虽然更快,但覆盖的用户群体少很多,所以 FGA 默认用 MediaProjection。

MediaProjection 截屏的工作原理

MediaProjection 是 Android 5.0 引入的 API,主要用于屏幕录制。FGA 巧妙地复用了它:

  1. 用户授权后,FGA 创建一个虚拟显示器(VirtualDisplay)
  2. 虚拟显示器捕获屏幕内容到 ImageReader 缓冲区
  3. FGA 从缓冲区获取一帧图像
  4. 用 OpenCV 处理这帧图像(灰度化、缩放、裁剪到游戏区域)
  5. 图像匹配,识别游戏状态
  6. 执行相应的自动化操作

权限确认的时机

在 首次启动服务时 需要用户手动确认一次 MediaProjection 权限:

  1. 打开 FGA 主界面
  2. 点击"启动服务"按钮
  3. 系统弹出"开始截取屏幕"对话框
  4. 点击"立即开始"授权

不同 Android 版本的行为差异

Android 版本Token 缓存说明
13 及以前可以缓存第一次授权后,后续启动服务不需要再次确认
14+不能缓存Google 在 Android 14 上强制 MediaProjection Token 不能跨会话复用,每次启动服务都需要重新确认

这是 Android 14 的安全改进,不是 FGA 的 bug。如果你用 Android 14+,每次启动服务都要点一下"立即开始",这是正常的。

截屏失败的常见原因

权限 token 失效

MediaProjection 的 token 有时会自动失效:

解决:停止 FGA 服务 → 重新启动服务 → 在权限对话框点"立即开始"。

虚拟显示器创建失败

某些 ROM 可能限制了应用创建虚拟显示器的权限。

解决:

  1. 重启手机后重试
  2. 确认没有其他录屏应用(如投屏、录屏)正在占用 MediaProjection
  3. 关闭 FGA 的电池优化

截黑屏

少数设备(尤其是分辨率特别高的设备)可能出现截黑屏的情况。

解决:

  1. 检查 FGA 设置里的"游戏区域偏移"是否正确
  2. 关闭游戏的"安全屏遮罩"功能(有些游戏会防止被截屏)
  3. 在 FGA 的高级设置里尝试切换 root 截屏模式(如果设备已 root)

截黑屏安全问题

有些游戏会提供"防止截屏/录屏"的安全功能,在这些页面截屏会得到黑屏或提示。FGA 对这种情况的处理:

Root 截屏模式

如果你的设备已 root,可以在 FGA 设置里切换到 root 截屏模式:

  1. 打开 FGA → 设置 → 高级设置
  2. 找到"截屏方式"选项
  3. 选择"Root Screenshot"
  4. FGA 会请求 root 权限并验证

Root 截屏的优点:

缺点:

继续阅读

所有权限都配置完成后,就可以正式启动 FGA 服务了: