DeviceStore

简介

DeviceStore 提供了一套全面的 API 来管理音视频设备,包括麦克风、摄像头和屏幕分享等功能。
重要:
请使用 shared 单例获取 DeviceStore 实例。不要尝试直接初始化。
说明:
设备状态更新通过 state 发布者传递。订阅它以接收有关麦克风、摄像头、网络等状态的实时更新。

功能特性

麦克风管理:打开/关闭麦克风,设置采集音量和输出音量。
摄像头管理:打开/关闭摄像头,切换前后摄像头,设置镜像和视频质量。
音频路由:切换扬声器和听筒。
屏幕分享:开启和关闭屏幕分享功能。
网络状态:实时监控网络质量信息。

可订阅数据

DeviceState 的字段描述如下:
属性名
类型
描述
microphoneStatus
ValueListenable<DeviceStatus>
麦克风状态。
microphoneLastError
ValueListenable<DeviceError>
麦克风错误,用于出现报错时提取错误信息。
captureVolume
ValueListenable<int>
采集音量,取值范围 [0, 100]。
currentMicVolume
ValueListenable<int>
当前用户实际输出音量。
outputVolume
ValueListenable<int>
最大输出音量,取值范围 [0, 100]。
cameraStatus
ValueListenable<DeviceStatus>
摄像头状态。
cameraLastError
ValueListenable<DeviceError>
摄像头错误,用于出现报错时提取错误信息。
isFrontCamera
ValueListenable<bool>
是否为前置摄像头。
localMirrorType
ValueListenable<MirrorType>
镜像状态。
localVideoQuality
ValueListenable<VideoQuality>
本地视频质量。
currentAudioRoute
ValueListenable<AudioRoute>
当前音频路由位置。
screenStatus
ValueListenable<DeviceStatus>
屏幕分享状态。
networkInfo
ValueListenable<NetworkInfo>
网络信息。

API 列表

函数名
描述
单例对象。
打开本地麦克风。
关闭本地麦克风。
设置采集音量。
设置输出音量。
设置音频路由。
开始摄像头测试。
停止摄像头测试。
打开本地摄像头。
关闭本地摄像头。
切换摄像头。
切换镜像状态。
更新视频质量。
开启屏幕分享。
关闭屏幕分享。
重置为默认状态。

获取实例

shared

单例对象。

麦克风操作

openLocalMicrophone

打开本地麦克风
Future<CompletionHandler> openLocalMicrophone();
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
completion
CompletionClosure?
必填
操作是否成功。

closeLocalMicrophone

关闭本地麦克风
void closeLocalMicrophone();
版本信息
从 3.5 版本开始支持。

setCaptureVolume

设置采集音量
void setCaptureVolume(int volume);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
volume
int
必填
采集音量,取值范围 [0, 100]。

setOutputVolume

设置最大输出音量
void setOutputVolume(int volume);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
volume
int
必填
最大音量,取值范围 [0, 100]。

音频路由

setAudioRoute

设置音频路由
void setAudioRoute(AudioRoute route);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
route
必填
路由位置。

摄像头操作

startCameraTest(cameraView:completion:)

开始摄像头测试。

stopCameraTest()

停止摄像头测试。

openLocalCamera

打开本地摄像头
Future<CompletionHandler> openLocalCamera(bool isFront);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
isFront
bool
必填
是否前置摄像头。
completion
CompletionClosure?
必填
操作是否成功。

closeLocalCamera

关闭本地摄像头
void closeLocalCamera();
版本信息
从 3.5 版本开始支持。

switchCamera

切换摄像头
void switchCamera(bool isFront);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
isFront
bool
必填
是否前置摄像头。

switchMirror

切换镜像状态
void switchMirror(MirrorType mirrorType);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
mirrorType
必填
镜像状态。

updateVideoQuality

更新视频质量
void updateVideoQuality(VideoQuality quality);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
quality
必填
视频质量。

屏幕分享

startScreenShare

开启屏幕分享
void startScreenShare();
版本信息
从 3.5 版本开始支持。

stopScreenShare

关闭屏幕采集
void stopScreenShare();
版本信息
从 3.5 版本开始支持。

重置

reset

重置为默认状态
void reset();
版本信息
从 3.5 版本开始支持。

数据结构

DeviceType

设备类型。
枚举值
说明
microphone
0
麦克风类型。
camera
1
摄像头类型。
screenShare
2
屏幕分享类型。

DeviceError

设备相关错误码。
枚举值
说明
noError
0
操作成功。
noDeviceDetected
1
未检测到设备。
noSystemPermission
2
没有系统权限。
notSupportCapture
3
不支持采集。
occupiedError
4
设备已占用。
unknownError
5
未知错误。

DeviceStatus

设备开启状态。
枚举值
说明
off
0
关闭。
on
1
开启。

AudioRoute

音频路由。
枚举值
说明
speakerphone
0
扬声器,使用扬声器播放(即"免提"),扬声器位于手机底部,声音偏大,适合外放音乐。
earpiece
1
听筒,使用听筒播放,听筒位于手机顶部,声音偏小,适合需要保护隐私的通话场景。

VideoQuality

视频质量。
枚举值
说明
quality360P
1
360P。
quality540P
2
540P。
quality720P
3
720P。
quality1080P
4
1080P。

NetworkQuality

网络质量。
枚举值
说明
unknown
0
未知网络。
excellent
1
极佳。
good
2
良好。
poor
3
较差。
bad
4
差。
veryBad
5
极差。
down
6
中断。

MirrorType

摄像头镜像状态。
枚举值
说明
auto
0
自动,前置摄像头镜像,后置摄像头不镜像。
enable
1
前后摄像头均镜像。
disable
2
前后摄像头均不镜像。

DeviceFocusOwner

设备焦点。
枚举值
说明
call
语音通话场景。
live
直播场景。
none
未设置。

NetworkInfo

网络信息
属性
类型
说明
userID
String
用户唯一ID。
quality
网络质量。
upLoss
int
上行丢包率,取值范围 [0, 100]。
downLoss
int
下行丢包率,取值范围 [0, 100]。
delay
int
延迟(单位:毫秒)。

DeviceState

设备状态。
属性
类型
说明
microphoneStatus
ValueListenable<DeviceStatus>
麦克风状态。
microphoneLastError
ValueListenable<DeviceError>
麦克风错误,用于出现报错时提取错误信息。
captureVolume
ValueListenable<int>
采集音量,取值范围 [0, 100]。
currentMicVolume
ValueListenable<int>
当前用户实际输出音量。
outputVolume
ValueListenable<int>
最大输出音量,取值范围 [0, 100]。
cameraStatus
ValueListenable<DeviceStatus>
摄像头状态。
cameraLastError
ValueListenable<DeviceError>
摄像头错误,用于出现报错时提取错误信息。
isFrontCamera
ValueListenable<bool>
是否为前置摄像头。
localMirrorType
ValueListenable<MirrorType>
镜像状态。
localVideoQuality
ValueListenable<VideoQuality>
本地视频质量。
currentAudioRoute
ValueListenable<AudioRoute>
当前音频路由位置。
screenStatus
ValueListenable<DeviceStatus>
屏幕分享状态。
networkInfo
ValueListenable<NetworkInfo>
网络信息。

使用示例

// 获取单例实例
let store = DeviceStore.shared

// 订阅状态变化
store.state.subscribe { state in
print("麦克风状态: \(state.microphoneStatus)")
print("摄像头状态: \(state.cameraStatus)")
print("网络质量: \(state.networkInfo.quality)")
}

// 打开麦克风
store.openLocalMicrophone { code, message in
if code == 0 {
print("麦克风打开成功")
}
}

// 打开前置摄像头
store.openLocalCamera(isFront: true) { code, message in
if code == 0 {
print("摄像头打开成功")
}
}