从 Android 14 开始,Android 动态性能框架 (ADPF) 中新增了一种名为 GAME
的电源模式,以便自定义手机在玩游戏期间的性能。GAME
会向 Power HAL 指明游戏应用位于前台。此指示可让 Power HAL 在玩游戏时采用电源管理策略,以便让用户获得稳定并提升性能的效果。
为了缩短游戏的加载时间,Android 13 在 ADPF 中引入了一个名为 GAME_LOADING
的新电源模式。GAME_LOADING
表示游戏应用是否处于加载状态,以便 Power HAL 可以提供加载速度提升。此指示可让 Power HAL 提供性能提升措施,从而缩短游戏加载时间。
本页介绍了游戏应用如何将游戏状态传递给 Power HAL,并说明了如何配置 Power HAL 以便在您的设备中充分利用它,以及如何测试您的 Power HAL 实现。
电源模式检测和通知
本部分介绍了 Power Manager 如何处理 GAME
和 GAME_LOADING
模式。
GAME 电源模式
Android 14 中的新电源模式 GAME
会向电源管理器服务指明用户正在玩游戏。Power HAL 收到 GAME
模式通知后,可在玩游戏期间调整电源以提升性能、降低温度并延长电池续航时间。
下图说明了进入 Power HAL 以指示 GAME
电源模式的信息流:
图 1. 用于指示正在玩游戏的信息流。
对于 AndroidManifest.xml
中 appCategory
为 GAME
的应用,始终会设置 GAME
电源模式。
GAME_LOADING 电源模式
加载速度提升模式的工作原理是检测游戏应用何时处于加载状态,并通知 Power HAL。Android 13 在面向开发者的 API 中引入了一个名为 isLoading
的新游戏状态。此游戏状态使用电源管理器服务中新增的 GAME_LOADING
电源模式来向 Power HAL 发送有关顶级游戏状态的通知。Power HAL 收到游戏加载状态通知后,可以调整平台的性能设置和 CPU 时钟频率,从而缩短加载时间。
为了表明游戏正在加载,游戏应用会使用游戏信息中心在游戏管理器中设置 isLoading
状态。游戏管理器将此状态传递给游戏管理器服务,后者将 setPowerMode
与新增的 GAME_LOADING
电源模式结合使用,以调用电源管理器服务。GAME_LOADING
电源模式会向 Power HAL 发出指示,告知其游戏处于加载状态,以便 Power HAL 可以提供加载速度提升。
下图说明了从应用到 Power HAL 的信息流,用以指示加载状态:
图 2. 用于指示游戏处于加载状态的信息流。
借助游戏信息中心,用户可以通过“性能设置”来启用或停用加载速度提升功能。默认情况下,“性能设置”始终处于关闭状态。
使用 GAME 和 GAME_LOADING 自定义 Power HAL
为了利用 GAME
和 GAME_LOADING
模式,原始设备制造商 (OEM) 必须自定义其 Power HAL 实现。由于电源管理和性能提升与硬件相关,因此在发布 Google Pixel 设备的参考实现之前,系统不会提供 GAME
或 GAME_LOADING
模式的参考实现。
为了增强 GAME
和 GAME_LOADING
模式下的性能,OEM 可以选择实现以下措施的组合:
- 稳定帧速率
- 提高 CPU 时钟速度
- 暂时降低温度限制
- 为前台游戏应用分配更高的 CPU 优先级
- 减少针对常规非游戏应用的 CPU 加速
- 优化热相关的电源分布策略
测试 GAME 模式实现
如需测试 GAME
模式的实现,请使用 GameManagerServiceTests.java
中以 testGamePowerMode_
为前缀的测试。
测试 GAME_LOADING 实现
如需测试 GAME_LOADING
模式的实现,请使用 android.gamemanager.cts.GameManagerTest#testSetGameContext
。该测试会验证具有 isLoading
上下文的 GameManager::setGameContext()
是否会在处于性能模式下的 Power HAL 上调用游戏加载模式。