Skip to main content
会议 SDK 在引擎上包了一层设备接口。音频输出路由是另一套, 见音频路由

枚举

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

切换摄像头

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

热插拔

onDeviceAdd / onDeviceRemove 的第二个参数直接是 DeviceInfo, 不是像其它事件那样的 xxxEventData 包装对象。
ArkTS 的 @State 只观测第一层赋值 —— 设备列表永远用「建新数组再整体赋值」, 不要 push / splice 原数组。

一个最小的设备选择器


实测的设备形态

一台 HUAWEI nova 12 Pro(HarmonyOS 6.1)上:
系统默认摄像头是后置。 视频会议通常要显式用前置 —— requestOpenCamera() 用的默认预设已经是前置(CameraPosition.front), 但如果你自己构造采集参数就要注意。
采集分辨率受设备档位限制,档位表因机型而异。 底层会把请求宽高吸附到最近的档位, 所以实际尺寸可能与预设不同。读 cameraTrack.captureWidth / captureHeight 拿实际值。这也是必须在 UIAbility.onCreate 里调 SRTC.init(this.context) 的原因 —— 没有 Context 就查不到档位表,分辨率会退化为”由底层自行吸附”。

权限

摄像头与麦克风是 user_grant 权限,除了在 module.json5 声明, 还必须在运行时申请:
权限没给时 requestOpenMic / requestOpenCamera 会失败, 底层抛的是 SRTCErrorcaptureError108018)。

相关阅读