Skip to content

setAudioSessionStartOptions

设置音频会话启动选项

setAudioSessionStartOptionsSUDRTGameAudioSession 接口中用于深度定制音频引擎初始化行为的方法。它允许 App 在游戏音频流正式建立前,通过 Bundle 传入性能模式(Performance Mode)和会话 ID(Session ID)等底层参数,以优化 Android 设备上的音频延迟或功耗表现。


方法声明

java
/**
 * 配置音频会话启动参数。
 * @param var1 包含启动配置项的 Bundle。常用 Key 包括:
 * - KEY_AUDIO_START_OPTION_PERFORMANCE_MODE
 * - KEY_AUDIO_START_OPTION_SESSION_ID
 * @return boolean 配置是否成功。返回 true 表示参数已记录,将在下一次音频初始化时生效。
 */
boolean setAudioSessionStartOptions(Bundle var1);

核心配置项与常量

通过 Bundle 设置以下参数可显著改变音频表现:

1. 性能模式 (Performance Mode)

决定了系统对音频缓冲区的处理策略。

常量值描述适用场景
VALUE_PERFORMANCE_MODE_LOW_LATENCY低延迟模式:响应最快,缓冲区最小。竞技游戏、音游、实时对战。
VALUE_PERFORMANCE_MODE_POWER_SAVING省电模式:增加延迟以换取更低的 CPU 占用。休闲小游戏、挂机类游戏。
VALUE_PERFORMANCE_MODE_NONE默认模式:平衡性能与兼容性。常规游戏场景。

2. 会话 ID (Session ID)

用于将游戏音频关联到特定的 Android AudioSession。

  • VALUE_SESSION_ID_ALLOCATE: 由 SDK 自动分配一个新的 ID,方便后续应用系统级音效(如均衡器)。
  • VALUE_SESSION_ID_NONE: 不关联特定会话。

代码示例

在游戏启动或音频重置前配置低延迟环境:

java
// 获取音频会话对象
SUDRTGameAudioSession audioSession = mGameHandle.getAudioSession();

// 1. 准备启动配置
Bundle options = new Bundle();

// 设置为低延迟模式以优化游戏体验
options.putInt(SUDRTGameAudioSession.KEY_AUDIO_START_OPTION_PERFORMANCE_MODE, 
               SUDRTGameAudioSession.VALUE_PERFORMANCE_MODE_LOW_LATENCY);

// 请求 SDK 分配独立的 Session ID
options.putInt(SUDRTGameAudioSession.KEY_AUDIO_START_OPTION_SESSION_ID, 
               SUDRTGameAudioSession.VALUE_SESSION_ID_ALLOCATE);

// 2. 应用配置
boolean isSuccess = audioSession.setAudioSessionStartOptions(options);

if (isSuccess) {
    Log.d("SudAudio", "音频启动参数配置成功,等待引擎加载...");
}

注意事项

  • 调用时机:此方法必须在音频引擎初始化(通常是 gameHandle.start() 或音频流建立)之前调用。如果音频已经开始播放,设置可能不会立即生效,直到下一次音频流重建。
  • 硬件限制LOW_LATENCY 模式的效果取决于 Android 设备的硬件支持情况。在部分低端机型上,开启此模式可能不会产生显著差异。
  • 功耗权衡:低延迟模式通常意味着更频繁的 CPU 唤醒,如果玩家对电池续航非常敏感,建议在非核心对局场景使用 POWER_SAVING 模式。