Game Mode API

借助 Game Mode API,您可以根据用户选择的相应游戏模式对游戏进行优化,以获得最佳性能或最长的电池续航时间。

或者,您也可以提交针对游戏模式干预项的请求,改进开发者不再更新的游戏的性能。

Game Mode API 和游戏模式干预项适用于:

每个游戏都可以实现 Game Mode API 行为,并提议游戏模式 对 OEM 进行干预设置,或者 选择停用游戏模式干预项

设置

如需在游戏中使用 Game Mode API,请执行以下操作:

  1. 下载并安装 Android 13 SDK

  2. AndroidManifest.xml 文件中, 通过设置 appCategory 属性(在 <application> 元素:

android:appCategory="game"
  1. 将以下代码添加到您的主 activity 中,以查询当前的游戏模式:

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
}
支持的游戏模式 说明
不支持 游戏未声明支持 Game Mode API,并且不支持游戏模式干预项。
标准模式 用户未选择游戏模式或用户已选择标准模式。
高性能模式 提供延迟时间最短的帧速率,但电池续航时间和保真度会降低。
省电模式 提供尽可能长的电池续航时间,但保真度或帧速率会降低。
  1. 添加代码以查询 onResume 函数:

    用户设置省电模式时的情形示例

最佳做法

如果您的游戏已支持多个保真度和帧速率目标,您应针对高性能模式和省电模式确定合适的设置:

  • 如需始终如一地达到设备最大帧速率,请考虑通过稍微降低保真度来实现更高的帧速率。

  • 为了延长电池续航时间,请考虑选择较低的显示刷新率(例如 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 提供的类似应用。或者,您也可以 在开发期间使用 Game Mode shell 命令。

如果您使用的是游戏信息中心,但系统未显示优化图标 您可能需要将应用上传到 Google Play 管理中心 并通过 Play 商店安装有关应用测试的信息,请参阅 Play 商店,请参阅 在内部分享 app bundle 和 APK

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

在图 1 中,运行中游戏的游戏模式可以从“Optimization” 微件。如 widget 上所示,游戏目前正在运行 PERFORMANCE 模式。

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

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

示例应用

Game Mode API 示例 重点介绍了如何优化 FPS 和渲染分辨率上限,从而在应用中节省大约 25% 的电量。

下一步

阅读游戏模式干预项 在无法提供游戏更新时提高游戏性能。