DeviceStore

简介

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

功能特性

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

可订阅数据

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