getGameAudioSession
获取音频控制会话
getGameAudioSession 返回由 Runtime Core 创建的音频管理对象 SUDRTGameAudioSession。该对象是宿主 App 调控小游戏音频行为的唯一入口,允许开发者在原生层面对游戏的全局音量、静音状态以及音频焦点进行精细化控制。
方法声明
java
/**
* 返回由 Runtime Core 创建的用于小游戏音频的控制 SUDRTGameAudioSession
* * @return SUDRTGameAudioSession 音频会话实例
*/
SUDRTGameAudioSession getGameAudioSession();核心功能
通过返回的 SUDRTGameAudioSession 对象,开发者通常可以实现以下业务逻辑:
- 全局音量调节:在不改变系统媒体音量的前提下,调整小游戏内部输出的混合音量。
- 一键静音:快速开启或关闭小游戏的所有声音输出(常用于 App 切换到后台或进入静音模式)。
- 音频焦点协同:当宿主 App 需要播放语音消息或背景音乐时,通过此 Session 暂时压低(Duck)或暂停小游戏声音。
运行行为
- 单例绑定:每个
SUDRTGameHandle实例对应一个唯一的AudioSession。 - 生命周期同步:当调用
gameHandle.stop()或pause()时,引擎内部通常会自动处理音频的挂起,但开发者也可以通过此 Session 进行手动覆盖。 - 独立性:该 Session 控制的是引擎内部的混音器,不会影响宿主 App 自身的 Native 播放器音频。
代码示例
java
// 1. 获取音频会话
SUDRTGameAudioSession audioSession = gameHandle.getGameAudioSession();
if (audioSession != null) {
// 2. 示例:设置小游戏全局音量为 50%
audioSession.setVolume(0.5f);
// 3. 示例:根据 App 业务需求静音
if (isAppMuted) {
audioSession.setMute(true);
}
}注意事项
- 空指针保护:虽然
SUDRTGameHandle创建成功后通常会初始化音频模块,但在极少数引擎初始化失败的情况下,该方法可能返回null。 - 时机建议:建议在
gameHandle.start()之后进行音频参数的初始化配置。 - 系统冲突:如果宿主 App 使用了复杂的
AudioManager焦点管理逻辑,请确保在申请/释放焦点时,同步操作此AudioSession以获得最佳用户体验。