Skip to content

getAudioInterruption

获取音频中断状态

getAudioInterruptionSUDRTGameAudioSession 接口中的一个同步查询方法。它用于检查当前游戏音频是否处于“被动中断”状态(如由于电话呼入、App 退至后台或第三方语音应用抢占音频焦点而导致的挂起)。


方法声明

java
/**
 * 获取当前游戏实例的音频中断状态。
 * @return boolean 返回 true 表示音频当前正处于中断挂起状态;返回 false 表示音频处于活跃运行状态。
 */
boolean getAudioInterruption();

运行行为

  1. 状态映射:该方法返回的是最近一次通过 setAudioInterruption(boolean) 设置的逻辑状态。
  2. 音频流监测:当返回 true 时,意味着 SDK 内部的音频渲染器(Renderer)已停止工作,不再占用系统的 AudioTrack 资源。
  3. 恢复依据:App 通常在 onResume 或通话结束后调用此方法进行检查,以决定是否需要恢复音频输出。

代码示例

在 App 的全局音频管理逻辑中校验状态:

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

// 模拟从后台回到前台时的检查
@Override
protected void onResume() {
    super.onResume();
    
    // 如果发现音频仍处于中断状态,且当前已具备播放条件,则恢复它
    if (audioSession.getAudioInterruption()) {
        Log.d("SudAudio", "检测到音频处于中断状态,正在尝试恢复...");
        audioSession.setAudioInterruption(false);
    }
}

注意事项

  • 与 isMute 的区别

  • isMute() 返回的是用户主观设置的“静音”开关。

  • getAudioInterruption() 返回的是由于外部干扰或系统策略导致的“挂起”状态。

  • 资源释放标志:在 Android 平台上,当此状态为 true 时,通常意味着 App 已经释放了部分音频硬件占用,这对于通过系统检测(如 OOM 或电量优化)非常重要。

  • 默认值:在游戏初始化完成后,该状态默认为 false