Skip to content

getGameAudioSession

获取音频控制会话

getGameAudioSession 返回由 Runtime Core 创建的音频管理对象 SUDRTGameAudioSession。该对象是宿主 App 调控小游戏音频行为的唯一入口,允许开发者在原生层面对游戏的全局音量、静音状态以及音频焦点进行精细化控制。


方法声明

java
/**
 * 返回由 Runtime Core 创建的用于小游戏音频的控制 SUDRTGameAudioSession
 * * @return SUDRTGameAudioSession 音频会话实例
 */
SUDRTGameAudioSession getGameAudioSession();

核心功能

通过返回的 SUDRTGameAudioSession 对象,开发者通常可以实现以下业务逻辑:

  1. 全局音量调节:在不改变系统媒体音量的前提下,调整小游戏内部输出的混合音量。
  2. 一键静音:快速开启或关闭小游戏的所有声音输出(常用于 App 切换到后台或进入静音模式)。
  3. 音频焦点协同:当宿主 App 需要播放语音消息或背景音乐时,通过此 Session 暂时压低(Duck)或暂停小游戏声音。

运行行为

  1. 单例绑定:每个 SUDRTGameHandle 实例对应一个唯一的 AudioSession
  2. 生命周期同步:当调用 gameHandle.stop()pause() 时,引擎内部通常会自动处理音频的挂起,但开发者也可以通过此 Session 进行手动覆盖。
  3. 独立性:该 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 以获得最佳用户体验。