游戏模式 API

游戏模式 API 允许您在用户选择相应的游戏模式时优化游戏以获得最佳性能或最长的电池续航时间。

或者,您可以提交对 游戏模式干预措施 的请求,以提高不再由开发者更新的游戏的性能。

游戏模式 API 和干预措施适用于

每个游戏都可以实现游戏模式 API 行为,向 OEM 提出游戏模式干预设置,或 选择退出游戏模式干预措施

设置

要在游戏中使用游戏模式 API,请执行以下操作

  1. 下载并安装 Android 13 SDK

  2. AndroidManifest.xml 文件中,通过在 <application> 元素中设置 appCategory 属性,将您的应用声明为游戏

android:appCategory="game"
  1. 通过将此添加到您的主活动中来查询当前游戏模式

Java

// Only call this for Android 12 and higher devices
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ) {
  // Get GameManager from SystemService
  GameManager gameManager = Context.getSystemService(GameManager.class);

  // Returns the selected GameMode
  int gameMode = gameManager.getGameMode();
}

Kotlin

// Only call this for Android 12 and higher devices
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
  // Get GameManager from SystemService
  val gameManager: GameManager? = context.getSystemService(Context.GAME_SERVICE) as GameManager?

  // Returns the selected GameMode
  val gameMode = gameManager?.gameMode
}
支持的游戏模式 描述
UNSUPPORTED 游戏未声明支持游戏模式 API,也不支持游戏模式干预措施。
STANDARD 用户未选择游戏模式,或用户选择了标准模式。
PERFORMANCE 以牺牲电池续航时间和保真度为代价,提供最低延迟的帧率。
BATTERY 以牺牲保真度或帧率为代价,提供尽可能长的电池续航时间。
  1. 添加代码以在 onResume 函数中查询游戏模式状态

    Example with user setting Battery mode

最佳实践

如果您的游戏已经支持多个保真度和帧率目标,则应为性能和省电模式识别合适的设置

  • 为了持续达到最大设备帧率:考虑稍微降低保真度以达到更高的帧率。

  • 为了延长电池续航时间:考虑选择较低的显示屏刷新率(例如 30Hz 或 60Hz)并 使用帧速率控制 来定位降低的速率。

对于高保真游戏(例如第一人称射击游戏、多人在线战术竞技游戏 (MOBA) 和角色扮演游戏 (RPG)),您应该专注于实现高一致的帧率以最大限度地提高用户沉浸感。

对于高保真游戏和休闲游戏,您都应支持省电模式,以通过降低峰值帧率来延长游戏时间。

声明支持游戏模式

要声明支持游戏模式并覆盖 OEM 的任何游戏模式干预措施,首先将游戏模式配置添加到 <application> 元素中,该元素位于您的 AndroidManifest.xml 文件中

<application>
    <meta-data android:name="android.game_mode_config"
               android:resource="@xml/game_mode_config" />
  ...
</application>

然后在项目的 res/xml/ 目录中创建一个 game_mode_config.xml 文件,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsBatteryGameMode="true"
    android:supportsPerformanceGameMode="true"
/>

切换游戏模式

要切换游戏模式,您可以使用游戏信息中心(在 Pixel 设备上可用)或 OEM 提供的类似应用程序。或者,您可以在开发过程中使用游戏模式 shell 命令。

如果您使用的是游戏信息中心并且游戏启动时未显示优化图标,您可能需要将您的应用上传到 Google Play Console 并通过 Play 商店安装它。有关在 Play 商店中进行应用测试的信息,请参阅 内部共享应用包和 APK

游戏信息中心活动! 图 1. 在 Pixel 设备上显示叠加在正在运行的游戏上的游戏信息中心。

在图 1 中,正在运行的游戏的游戏模式可以通过优化窗口小部件更改。如窗口小部件所示,游戏目前正在运行 PERFORMANCE 模式。

在开发过程中,如果您使用的是没有游戏信息中心的设备,并且制造商未提供任何设置每个应用的游戏模式的方法,则可以通过 adb 更改游戏模式状态

adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>

示例应用程序

游戏模式 API 示例 突出显示了如何优化 FPS 和渲染分辨率上限,以节省应用中大约 25% 的电量。

下一步

阅读 游戏模式干预措施,了解如何在无法提供游戏更新时提高游戏的性能。