Game Mode API

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

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

Game Mode API 和游戏模式干预项适用于以下设备:

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

设置

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

  1. 下载并安装 Android 13 SDK

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

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 的任何游戏模式干预项,请先将游戏模式配置添加到 AndroidManifest.xml 文件中的 <application> 元素中:

<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 管理中心,并通过 Play 商店进行安装。如需了解 Play 商店中的应用测试,请参阅在内部分享 app bundle 和 APK

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

在图 1 中,可以从优化 widget 更改正在运行的游戏的游戏模式。如 widget 中所示,游戏当前在 PERFORMANCE 模式下运行。

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

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

示例应用

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

继续

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