从 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 Manager Service 指示用户正在玩游戏。当 Power HAL 收到 GAME
模式的通知时,它可以调整电源以增强性能、降低温度并延长电池续航时间(在玩游戏时)。
下图说明了向 Power HAL 发送信息以指示 GAME
电源模式的流程
图 1. 指示正在玩游戏的信息流。
GAME
电源模式始终为在 AndroidManifest.xml
中 appCategory
为 GAME
的应用设置。
GAME_LOADING 电源模式
加载加速模式通过检测游戏应用何时处于加载状态并通知 Power HAL 来工作。Android 13 在面向开发者的 API 中引入了一种名为 isLoading
的新游戏状态。此游戏状态使用 Power Manager Service 中的新 GAME_LOADING
电源模式来通知 Power HAL 最顶层游戏状态。一旦 Power HAL 收到游戏加载状态的通知,它就可以调整平台的性能设置和 CPU 时钟速率,从而缩短加载时间。
为了指示游戏正在加载,游戏应用使用游戏控制面板在 Game Manager 中设置 isLoading
状态。Game Manager 将此状态传递给 Game Manager Service,后者使用带有新 GAME_LOADING
电源模式的 setPowerMode
来调用 Power Manager Service。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 上的游戏加载模式。