setAudioSessionStartOptions
设置音频会话启动选项
setAudioSessionStartOptions 是 SUDRTGameAudioSession 接口中用于深度定制音频引擎初始化行为的方法。它允许 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模式。