Skip to main content
会议 SDK 在引擎上直接包了一层设备与路由接口,不用再去碰底层的 DeviceManager / AudioRouteSession

设备枚举

DeviceKindaudioInput / audioOutput / videoInput
做设备下拉框用 cachedDevices() —— 它不会每次渲染都去问系统。 配合热插拔事件刷新即可。
DeviceInfo 字段:deviceIdnamekindisDefault

热插拔监听

事件走 SMeetingDelegate 里的 onDeviceAdd / onDeviceRemove (第二个参数直接是 DeviceInfo):
ArkTS 的 @Observed / @State 只观测第一层属性的赋值。设备列表这类数组 永远用「建新数组再整体赋值」,不要 push / splice 原数组 —— 那样 UI 不会刷新。

切换摄像头

这两个是原地换设备、不重建轨道,所以不需要重新发布 —— 比直接用 SRTC 的 changeDeviceId 少一层心智负担。

音频输出路由

两种设置,优先级不同

状态查询

判断”免提”按钮的选中态用 effectiveAudioRouteTarget,不是 defaultAudioRoute —— 后者在有临时设置时不代表当前状态。

为什么可切换目标只有两个

外接设备由系统接管。 SDK 能上报”你现在走蓝牙”,但不能主动切到某个具体外设 —— 那是系统的职责。
收到 onAudioRouteChange 时不要在回调里再切回去。用户插耳机 → 系统切到 wired → 你的回调里又 setAudioRoute(speaker) → 系统再切回……声音会在两个设备间反复跳。正确做法是更新 UI,把选择权交给用户。

扬声器快捷开关

等价于在 speakerearpiece 之间切,用于”免提”按钮。

系统通话状态

来电会抢走音频通道。监听 onCallStateChange
AudioCallStateunknown / dialing / incoming / connected / disconnected
  • incoming / connected:提示”通话中已静音”
  • disconnected:恢复

相关阅读