帮你快速理解、总结文档立即下载

DeviceStore

最近更新时间:2026-10-23 14:57:31
本文档已由 AI 辅助审校
我的收藏

简介

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

功能特性

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

可订阅数据

DeviceState 的字段描述如下:
属性名
类型
描述
microphoneStatus
StateFlow<DeviceStatus>
麦克风状态。
microphoneLastError
StateFlow<DeviceError>
麦克风错误,用于出现报错时提取错误信息。
captureVolume
StateFlow<Int>
采集音量,取值范围0到100。
captureVolume
ValueListenable<int>
采集音量,取值范围0到100。已废弃,请使用 microphoneVolume 代替。
currentMicVolume
StateFlow<Int>
当前用户实际输出音量。
currentMicVolume
ValueListenable<int>
当前用户实际输出音量。已废弃,请使用 microphoneInputLevel 代替。
outputVolume
StateFlow<Int>
最大输出音量,取值范围0到100。
outputVolume
ValueListenable<int>
最大输出音量,取值范围0到100。已废弃,请使用 speakerVolume 代替。
cameraStatus
StateFlow<DeviceStatus>
摄像头状态。
cameraLastError
StateFlow<DeviceError>
摄像头错误,用于出现报错时提取错误信息。
isFrontCamera
StateFlow<Boolean>
是否为前置摄像头。
localMirrorType
StateFlow<MirrorType>
镜像状态。
localVideoQuality
StateFlow<VideoQuality>
本地视频质量。
currentAudioRoute
StateFlow<AudioRoute>
当前音频路由位置。
currentAudioRoute
ValueListenable<AudioRoute>
当前音频路由位置。已废弃,请使用 currentSpeaker 代替。
screenStatus
StateFlow<DeviceStatus>
屏幕分享状态。
screenStatus
ValueListenable<DeviceStatus>
屏幕分享状态。已废弃,请使用 ScreenShareStore.state.screenStatus 代替。
networkInfo
StateFlow<NetworkInfo>
网络信息。
networkType
StateFlow<NetworkType>
当前网络类型。
microphoneList
StateFlow<List<DeviceInfo>>
当前麦克风设备列表。移动端不提供麦克风设备枚举,列表为空。 由引擎自动维护,系统设备列表发生变化时更新。
currentMicrophone
StateFlow<DeviceInfo>
当前麦克风设备,deviceId 为空时表示未选择麦克风。
microphoneVolume
StateFlow<Int>
麦克风采集音量,取值范围0到100。
microphoneInputLevel
StateFlow<Int>
用于展示麦克风音量条的实时电平值,范围0-100。 仅在麦克风测试进行中更新,参见 startMicrophoneTest。
cameraList
StateFlow<List<DeviceInfo>>
摄像头设备列表。桌面端包含所有摄像头,移动端包含前置摄像头和后置摄像头。 由引擎自动维护,系统设备列表发生变化时更新。
currentCamera
StateFlow<DeviceInfo>
当前摄像头设备,deviceId 为空时表示未选择摄像头。
speakerList
StateFlow<List<DeviceInfo>>
扬声器设备列表。桌面端包含所有扬声器,移动端包含扬声器和听筒。 由引擎自动维护,系统设备列表发生变化时更新。
currentSpeaker
StateFlow<DeviceInfo>
当前扬声器设备,deviceId 为空时表示未选择扬声器。
speakerVolume
StateFlow<Int>
扬声器播放音量,取值范围0到100。
speakerOutputLevel
StateFlow<Int>
扬声器实时输出电平值,范围0-100。 仅在扬声器测试进行中更新,参见 startSpeakerTest。

API 列表

函数名
描述
单例对象。
打开本地麦克风。
关闭本地麦克风。
设置采集音量。
设置输出音量。
设置麦克风采集音量。
设置扬声器播放音量。
选择麦克风设备。
开始麦克风测试。
停止麦克风测试。
选择扬声器设备。
开始扬声器测试。
停止扬声器测试。
设置音频路由。
开始摄像头测试。
停止摄像头测试。
打开本地摄像头。
关闭本地摄像头。
切换摄像头。
选择摄像头设备。
切换镜像状态。
更新视频质量。
设置采集音量,请使用 setMicrophoneVolume 代替。
设置输出音量,请使用 setSpeakerVolume 代替。
设置音频路由,请使用 setCurrentSpeaker 代替。
切换摄像头,请使用 setCurrentCamera 代替。
重置为默认状态。

获取实例

DeviceStore.shared

单例对象。

麦克风操作

openLocalMicrophone

打开本地麦克风。
abstract fun openLocalMicrophone(completion: CompletionHandler?)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
completion
操作是否成功。

closeLocalMicrophone

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

setCaptureVolume

设置采集音量。
@Deprecated("Use setMicrophoneVolume instead. Will be removed in version 5.5.")
abstract fun setCaptureVolume(volume: Int)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
volume
Int
采集音量,取值范围0到100。

setOutputVolume

设置最大输出音量。
@Deprecated("Use setSpeakerVolume instead. Will be removed in version 5.5.")
abstract fun setOutputVolume(volume: Int)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
volume
Int
最大音量,取值范围0到100。

setMicrophoneVolume

设置麦克风采集音量。
abstract fun setMicrophoneVolume(volume: Int)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
volume
Int
采集音量,取值范围0到100。

setSpeakerVolume

设置扬声器播放音量。
abstract fun setSpeakerVolume(volume: Int)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
volume
Int
播放音量,取值范围0到100。

setCurrentMicrophone

设置当前麦克风设备 仅桌面端支持,移动端不允许切换麦克风设备,调用无效。仅在麦克风处于开启状态时生效。
abstract fun setCurrentMicrophone(microphone: DeviceInfo)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
microphone
麦克风设备,取 microphoneList 中的元素。

startMicrophoneTest

开始麦克风测试,采集电平实时回灌到 microphoneInputLevel,可传入采集间隔(毫秒)。
abstract fun startMicrophoneTest(interval: Int)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
interval
Int
采集间隔,单位毫秒,默认 200ms。

stopMicrophoneTest

停止麦克风测试。
abstract fun stopMicrophoneTest()
版本信息
从3.5版本开始支持。

扬声器操作

setCurrentSpeaker

设置当前扬声器设备。
abstract fun setCurrentSpeaker(speaker: DeviceInfo)
全平台支持:桌面端可选中 speakerList 中的任意设备,移动端仅扬声器/听筒切换生效。
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
speaker
扬声器设备,取 speakerList 中的元素。

startSpeakerTest

开始扬声器测试,播放电平实时回灌到 speakerOutputLevel 测试时会播放一段音频文件,用于确认当前使用的扬声器设备是否正确。
abstract fun startSpeakerTest(filePath: String)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
filePath
String
测试播放使用的音频文件路径,必填;为空时返回参数错误。

stopSpeakerTest

停止扬声器测试。
abstract fun stopSpeakerTest()
版本信息
从3.5版本开始支持。

音频路由

setAudioRoute

设置音频路由。
@Deprecated("Use setCurrentSpeaker instead. Will be removed in version 5.5.")
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

切换摄像头。
@Deprecated("Use setCurrentCamera instead. Will be removed in version 5.5.")
abstract fun switchCamera(isFront: Boolean)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
isFront
Boolean
是否前置摄像头。

setCurrentCamera

设置当前摄像头设备 全平台支持:桌面端可选中 cameraList 中的任意设备,移动端等价于切换前后摄像头。 仅在摄像头处于开启状态时生效。
abstract fun setCurrentCamera(camera: DeviceInfo)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
camera
摄像头设备,取 cameraList 中的元素。

switchMirror

切换镜像状态。
abstract fun switchMirror(mirrorType: MirrorType)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
mirrorType
镜像状态。

updateVideoQuality

更新视频质量。
abstract fun updateVideoQuality(quality: VideoQuality, orientation: VideoOrientation = VideoOrientation.PORTRAIT)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
quality
视频质量。
orientation
视频方向。默认 portrait。传 landscape 使用基准(宽 × 高)分辨率。

已废弃

setCaptureVolume

设置采集音量。
@Deprecated("Use setMicrophoneVolume instead. Will be removed in version 5.5.")
abstract fun setCaptureVolume(volume: Int)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
volume
Int
采集音量,取值范围0到100。

setOutputVolume

设置最大输出音量。
@Deprecated("Use setSpeakerVolume instead. Will be removed in version 5.5.")
abstract fun setOutputVolume(volume: Int)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
volume
Int
最大音量,取值范围0到100。

setAudioRoute

设置音频路由。
@Deprecated("Use setCurrentSpeaker instead. Will be removed in version 5.5.")
abstract fun setAudioRoute(audioRoute: AudioRoute)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
audioRoute
路由位置。

switchCamera

切换摄像头。
@Deprecated("Use setCurrentCamera instead. Will be removed in version 5.5.")
abstract fun switchCamera(isFront: Boolean)
版本信息
从3.5版本开始支持。
参数说明
参数名
类型
描述
isFront
Boolean
是否前置摄像头。

重置

reset

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

数据结构

DeviceType

设备类型。
枚举值
值
说明
MICROPHONE
1
麦克风类型。
CAMERA
2
摄像头类型。
SCREEN_SHARE
3
屏幕分享类型。

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

视频质量档位。最终编码分辨率由本档位与 VideoOrientation 共同决定:横屏保持基准分辨率(宽 × 高),竖屏宽高互换。
枚举值
值
说明
QUALITY_360P
1
360P。横屏分辨率 640 × 360;竖屏(宽高互换)为 360 × 640。
QUALITY_540P
2
540P。横屏分辨率 960 × 540;竖屏(宽高互换)为 540 × 960。
QUALITY_720P
3
720P。横屏分辨率 1280 × 720;竖屏(宽高互换)为 720 × 1280。
QUALITY_1080P
4
1080P。横屏分辨率 1920 × 1080;竖屏(宽高互换)为 1080 × 1920。

VideoOrientation

视频方向。与 VideoQuality 共同决定最终编码分辨率:横屏保持基准分辨率(宽 × 高),竖屏宽高互换。
枚举值
值
说明
LANDSCAPE
0
横屏,编码分辨率宽大于高(例如 1280 x 720)。
PORTRAIT
1
竖屏,编码分辨率高大于宽(例如 720 x 1280)。

NetworkQuality

网络质量。
枚举值
值
说明
UNKNOWN
0
未知网络。
EXCELLENT
1
极佳。
GOOD
2
良好。
POOR
3
较差。
BAD
4
差。
VERY_BAD
5
极差。
DOWN
6
中断。

MirrorType

摄像头镜像状态。
枚举值
值
说明
AUTO
0
自动,前置摄像头镜像,后置摄像头不镜像。
ENABLE
1
前后摄像头均镜像。
DISABLE
2
前后摄像头均不镜像。

NetworkType

网络类型。
枚举值
值
说明
UNKNOWN
0
未知或未识别的网络类型。
WIFI
1
WiFi 网络连接。
CELLULAR
2
蜂窝/移动数据网络连接。

DeviceInfo

设备信息。
属性
类型
说明
deviceId
String
设备 ID。
deviceName
String
设备名称。

NetworkInfo

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

DeviceState

设备状态。
属性
类型
说明
microphoneStatus
StateFlow<DeviceStatus>
麦克风状态。
microphoneLastError
StateFlow<DeviceError>
麦克风错误,用于出现报错时提取错误信息。
captureVolume
StateFlow<Int>
采集音量,取值范围0到100。
captureVolume
ValueListenable<int>
采集音量,取值范围0到100。已废弃,请使用 microphoneVolume 代替。
currentMicVolume
StateFlow<Int>
当前用户实际输出音量。
currentMicVolume
ValueListenable<int>
当前用户实际输出音量。已废弃,请使用 microphoneInputLevel 代替。
outputVolume
StateFlow<Int>
最大输出音量,取值范围0到100。
outputVolume
ValueListenable<int>
最大输出音量,取值范围0到100。已废弃,请使用 speakerVolume 代替。
cameraStatus
StateFlow<DeviceStatus>
摄像头状态。
cameraLastError
StateFlow<DeviceError>
摄像头错误,用于出现报错时提取错误信息。
isFrontCamera
StateFlow<Boolean>
是否为前置摄像头。
localMirrorType
StateFlow<MirrorType>
镜像状态。
localVideoQuality
StateFlow<VideoQuality>
本地视频质量。
currentAudioRoute
StateFlow<AudioRoute>
当前音频路由位置。
currentAudioRoute
ValueListenable<AudioRoute>
当前音频路由位置。已废弃,请使用 currentSpeaker 代替。
screenStatus
StateFlow<DeviceStatus>
屏幕分享状态。
screenStatus
ValueListenable<DeviceStatus>
屏幕分享状态。已废弃,请使用 ScreenShareStore.state.screenStatus 代替。
networkInfo
StateFlow<NetworkInfo>
网络信息。
networkType
StateFlow<NetworkType>
当前网络类型。
microphoneList
StateFlow<List<DeviceInfo>>
当前麦克风设备列表。移动端不提供麦克风设备枚举,列表为空。 由引擎自动维护,系统设备列表发生变化时更新。
currentMicrophone
StateFlow<DeviceInfo>
当前麦克风设备,deviceId 为空时表示未选择麦克风。
microphoneVolume
StateFlow<Int>
麦克风采集音量,取值范围0到100。
microphoneInputLevel
StateFlow<Int>
用于展示麦克风音量条的实时电平值,范围0-100。 仅在麦克风测试进行中更新,参见 startMicrophoneTest。
cameraList
StateFlow<List<DeviceInfo>>
摄像头设备列表。桌面端包含所有摄像头,移动端包含前置摄像头和后置摄像头。 由引擎自动维护,系统设备列表发生变化时更新。
currentCamera
StateFlow<DeviceInfo>
当前摄像头设备,deviceId 为空时表示未选择摄像头。
speakerList
StateFlow<List<DeviceInfo>>
扬声器设备列表。桌面端包含所有扬声器,移动端包含扬声器和听筒。 由引擎自动维护,系统设备列表发生变化时更新。
currentSpeaker
StateFlow<DeviceInfo>
当前扬声器设备,deviceId 为空时表示未选择扬声器。
speakerVolume
StateFlow<Int>
扬声器播放音量,取值范围0到100。
speakerOutputLevel
StateFlow<Int>
扬声器实时输出电平值,范围0-100。 仅在扬声器测试进行中更新,参见 startSpeakerTest。

使用示例

// 获取单例实例
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("摄像头打开成功")
}
}