DeviceStore
简介
DeviceStore 提供了一套全面的 API 来管理音视频设备,包括麦克风、摄像头和屏幕分享等功能。
重要:
请使用 DeviceStore.shared 单例获取 DeviceStore 实例。不要尝试直接初始化。
说明:
设备状态更新通过 deviceState 发布者传递。订阅它以接收有关麦克风、摄像头、网络等状态的实时更新。
功能特性
麦克风管理:打开/关闭麦克风,设置采集音量和输出音量。
摄像头管理:打开/关闭摄像头,切换前后摄像头,设置镜像和视频质量。
音频路由:切换扬声器和听筒。
屏幕分享:开启和关闭屏幕分享功能。
网络状态:实时监控网络质量信息。
可订阅数据
DeviceState 的字段描述如下:
属性名 | 类型 | 描述 |
microphoneStatus | 麦克风状态。 | |
microphoneLastError | 麦克风错误,用于出现报错时提取错误信息。 | |
captureVolume | StateFlow<Int> | 采集音量,取值范围 [0, 100]。 |
currentMicVolume | StateFlow<Int> | 当前用户实际输出音量。 |
outputVolume | StateFlow<Int> | 最大输出音量,取值范围 [0, 100]。 |
cameraStatus | 摄像头状态。 | |
cameraLastError | 摄像头错误,用于出现报错时提取错误信息。 | |
isFrontCamera | StateFlow<Boolean> | 是否为前置摄像头。 |
localMirrorType | 镜像状态。 | |
localVideoQuality | 本地视频质量。 | |
currentAudioRoute | 当前音频路由位置。 | |
screenStatus | 屏幕分享状态。 | |
networkInfo | 网络信息。 |
API 列表
函数名 | 描述 |
单例对象。 | |
打开本地麦克风。 | |
关闭本地麦克风。 | |
设置采集音量。 | |
设置输出音量。 | |
设置音频路由。 | |
开始摄像头测试。 | |
停止摄像头测试。 | |
打开本地摄像头。 | |
关闭本地摄像头。 | |
切换摄像头。 | |
切换镜像状态。 | |
更新视频质量。 | |
开启屏幕分享。 | |
关闭屏幕分享。 | |
重置为默认状态。 |
获取实例
DeviceStore.shared
单例对象。
麦克风操作
openLocalMicrophone
打开本地麦克风
abstract fun openLocalMicrophone(completion: CompletionHandler?)
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
completion | 必填 | 操作是否成功。 |
closeLocalMicrophone
关闭本地麦克风
abstract fun closeLocalMicrophone()
版本信息
从 3.5 版本开始支持。
setCaptureVolume
设置采集音量
abstract fun setCaptureVolume(volume: Int)
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
volume | Int | 必填 | 采集音量,取值范围 [0, 100]。 |
setOutputVolume
设置最大输出音量
abstract fun setOutputVolume(volume: Int)
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
volume | Int | 必填 | 最大音量,取值范围 [0, 100]。 |
音频路由
setAudioRoute
设置音频路由
abstract fun setAudioRoute(audioRoute: AudioRoute)
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
audioRoute | 必填 | 路由位置。 |
摄像头操作
startCameraTest
开始摄像头测试,如果摄像头打开成功,会将画面渲染到设置的 CameraView 上
abstract fun startCameraTest(cameraView: CameraView, completion: CompletionHandler?)
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
cameraView | 必填 | 摄像头采集画面的渲染视图。 | |
completion | 必填 | 操作是否成功。 |
stopCameraTest
停止摄像头测试
abstract fun stopCameraTest()
版本信息
从 3.5 版本开始支持。
openLocalCamera
打开本地摄像头
abstract fun openLocalCamera(isFront: Boolean, completion: CompletionHandler?)
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
isFront | Boolean | 必填 | 是否前置摄像头。 |
completion | 必填 | 操作是否成功。 |
closeLocalCamera
关闭本地摄像头
abstract fun closeLocalCamera()
版本信息
从 3.5 版本开始支持。
switchCamera
切换摄像头
abstract fun switchCamera(isFront: Boolean)
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
isFront | Boolean | 必填 | 是否前置摄像头。 |
switchMirror
切换镜像状态
abstract fun switchMirror(mirrorType: MirrorType)
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
mirrorType | 必填 | 镜像状态。 |
updateVideoQuality
更新视频质量
abstract fun updateVideoQuality(quality: VideoQuality)
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
quality | 必填 | 视频质量。 |
屏幕分享
startScreenShare
开启屏幕分享
abstract fun startScreenShare()
版本信息
从 3.5 版本开始支持。
stopScreenShare
关闭屏幕采集
abstract fun stopScreenShare()
版本信息
从 3.5 版本开始支持。
重置
reset
重置为默认状态
abstract fun reset()
版本信息
从 3.5 版本开始支持。
数据结构
DeviceType
设备类型。
枚举值 | 值 | 说明 |
MICROPHONE | 0 | 麦克风类型。 |
CAMERA | 1 | 摄像头类型。 |
SCREEN_SHARE | 2 | 屏幕分享类型。 |
DeviceError
设备相关错误码。
枚举值 | 值 | 说明 |
NO_ERROR | 0 | 操作成功。 |
NO_DEVICE_DETECTED | 1 | 未检测到设备。 |
NO_SYSTEM_PERMISSION | 2 | 没有系统权限。 |
NOT_SUPPORT_CAPTURE | 3 | 不支持采集。 |
OCCUPIED_ERROR | 4 | 设备已占用。 |
UNKNOWN_ERROR | 5 | 未知错误。 |
DeviceStatus
设备开启状态。
枚举值 | 值 | 说明 |
OFF | 0 | 关闭。 |
ON | 1 | 开启。 |
AudioRoute
音频路由。
枚举值 | 值 | 说明 |
SPEAKERPHONE | 0 | 扬声器,使用扬声器播放(即"免提"),扬声器位于手机底部,声音偏大,适合外放音乐。 |
EARPIECE | 1 | 听筒,使用听筒播放,听筒位于手机顶部,声音偏小,适合需要保护隐私的通话场景。 |
VideoQuality
视频质量。
枚举值 | 值 | 说明 |
QUALITY_360P | 1 | 360P。 |
QUALITY_540P | 2 | 540P。 |
QUALITY_720P | 3 | 720P。 |
QUALITY_1080P | 4 | 1080P。 |
NetworkQuality
网络质量。
枚举值 | 值 | 说明 |
UNKNOWN | 0 | 未知网络。 |
EXCELLENT | 1 | 极佳。 |
GOOD | 2 | 良好。 |
POOR | 3 | 较差。 |
BAD | 4 | 差。 |
VERY_BAD | 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 | 麦克风状态。 | |
microphoneLastError | 麦克风错误,用于出现报错时提取错误信息。 | |
captureVolume | StateFlow<Int> | 采集音量,取值范围 [0, 100]。 |
currentMicVolume | StateFlow<Int> | 当前用户实际输出音量。 |
outputVolume | StateFlow<Int> | 最大输出音量,取值范围 [0, 100]。 |
cameraStatus | 摄像头状态。 | |
cameraLastError | 摄像头错误,用于出现报错时提取错误信息。 | |
isFrontCamera | StateFlow<Boolean> | 是否为前置摄像头。 |
localMirrorType | 镜像状态。 | |
localVideoQuality | 本地视频质量。 | |
currentAudioRoute | 当前音频路由位置。 | |
screenStatus | 屏幕分享状态。 | |
networkInfo | 网络信息。 |
使用示例
// 获取单例实例val store = DeviceStore.shared()// 订阅状态变化lifecycleScope.launch {store.deviceState.microphoneStatus.collect { status ->println("麦克风状态: $status")}}lifecycleScope.launch {store.deviceState.cameraStatus.collect { status ->println("摄像头状态: $status")}}// 打开麦克风store.openLocalMicrophone { code, message ->if (code == 0) {println("麦克风打开成功")}}// 打开前置摄像头store.openLocalCamera(isFront = true) { code, message ->if (code == 0) {println("摄像头打开成功")}}