用户在进行实时音视频通话的过程中,可能会被系统电话,第三方应用,或其他系统行为打断,RTC 将通过系统回调,在打断结束时,恢复音视频通话。
在音视频通话被打断时,RTC 的预期表现如下表。

打断类型AndroidiOSWindows/macOS

系统电话

音频:暂停,通话结束后自动恢复
视频:正常

音频:暂停,通话结束后自动恢复
视频:正常

不适用

第三方应用
(占用音视频采集设备)

音视频:被打断,无法自动恢复,将回调设备采集状态

音视频:暂停,占用结束后自动恢复

由操作系统决定,例如设备被抢占导致RTC 采集不到数据,将回调相应状态

锁屏/ PC 合盖
(系统未休眠)

音频:正常
视频:暂停,解锁唤醒后自动恢复

音频:正常
视频:暂停,解锁唤醒后自动恢复

音频:正常
视频:暂停,解锁唤醒后自动恢复

应用处于侧拉、分屏或者画中画模式不适用视频:被打断,将回调设备采集状态,打断结束后自动恢复不适用
系统性能不足(如设备过热)不适用视频:被打断,将回调设备采集状态,打断结束后自动恢复不适用
应用切换到后台不适用视频:被打断,将回调设备采集状态,打断结束后自动恢复不适用

除了 RTC 无法自动恢复的音视频采集外,你还需要关注打断和恢复时远端音视频播放状态,实现以下的订阅相关设置。
你可以通过监听 onAudioDeviceStateChanged 和 onVideoDeviceStateChanged 回调,了解采集设备被打断和自动恢复的情况。

自 3.38.1 开始,RTC SDK 新增以下枚举值,反映当前打断状态。

  1. 在 RTC 通话被打断时,调用 pauseAllSubscribedStream 暂停接收所有远端用户。 按照上方表格,指定暂停接收的媒体流类型为音频或视频。

  2. 在 RTC 通话从打断中恢复时,调用 resumeAllSubscribedStream 恢复订阅所有远端用户。监听以下回调,了解音视频的采集状态。

    • onAudioDeviceStateChanged、onVideoDeviceStateChanged

      • state: RuntimeError

      • error: DeviceNoCallback

    • onAudioDeviceWarning、onVideoDeviceWarning

      • warning: CaptureSilence

当从以上回调监听到采集异常时,你可以尝试通过再次调用 startVideoCapture 或 startAudioCapture 来进行恢复。

注意事项
API 参考