简介
LiveSeatStore 提供了一套完整的麦位管理 API,包括上麦、下麦、锁麦、解锁麦位、踢用户下麦、远程控制设备等功能。 通过该类,可以在直播间内实现麦位管理功能。重要:
使用 LiveSeatStore.create 工厂方法创建
LiveSeatStore 实例,需要传入有效的直播间 ID。说明:
麦位状态更新通过 liveSeatState 发布者传递。订阅它以接收房间内麦位数据的实时更新。
功能特性
麦位管理:上麦、下麦、锁麦、解锁麦位等操作。
用户管理:踢用户下麦、移动用户到指定麦位。
主咖管理:在支持主咖位的麦位模板下,将已上麦用户设为主咖或取消主咖。
设备控制:远程控制用户的摄像头和麦克风。
事件监听:监听麦位相关事件。
可订阅数据
LiveSeatState 的字段描述如下:
属性名 | 类型 | 描述 |
seatList | 麦位列表。 | |
canvas | 画布信息。 | |
speakingUsers | StateFlow<MutableMap<String, Int>> | 正在说话的用户。 |
avStatistics | 音视频相关统计信息。 | |
seatMode | 当前房间的上麦模式,支持实时更新并可被订阅监听。 |
API 列表
函数名 | 描述 |
创建麦位管理实例。 | |
麦位事件回调。 | |
麦位事件回调。 | |
上麦。 | |
下麦。 | |
锁麦。 | |
解锁麦位。 | |
踢用户下麦。 | |
移动用户。 | |
设置上麦模式。 | |
设为主咖。 | |
取消主咖。 | |
开启远程摄像头。 | |
关闭远程摄像头。 | |
开启远程麦克风。 | |
关闭远程麦克风。 |
创建实例
LiveSeatStore.create
创建麦位管理实例。
观察状态和事件
addLiveSeatEventListener
添加麦位事件监听器。
abstract fun addLiveSeatEventListener(listener: LiveSeatListener?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
listener | 监听器。 |
removeLiveSeatEventListener
移除麦位事件监听器。
abstract fun removeLiveSeatEventListener(listener: LiveSeatListener?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
listener | 监听器。 |
麦位操作
takeSeat
上麦。
abstract fun takeSeat(seatIndex: Int,completion: CompletionHandler?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
seatIndex | Int | 麦位索引。 |
completion | 完成回调。 |
leaveSeat
下麦。
abstract fun leaveSeat(completion: CompletionHandler?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
completion | 完成回调。 |
lockSeat
锁定麦位。
abstract fun lockSeat(seatIndex: Int,completion: CompletionHandler?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
seatIndex | Int | 麦位索引。 |
completion | 完成回调。 |
unlockSeat
解锁麦位。
abstract fun unlockSeat(seatIndex: Int,completion: CompletionHandler?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
seatIndex | Int | 麦位索引。 |
completion | 完成回调。 |
用户管理
kickUserOutOfSeat
踢用户下麦。
abstract fun kickUserOutOfSeat(userID: String?,completion: CompletionHandler?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
userID | String? | 用户 ID。 |
completion | 完成回调。 |
moveUserToSeat
移动用户到麦位。
abstract fun moveUserToSeat(userID: String?,targetIndex: Int,policy: MoveSeatPolicy? = MoveSeatPolicy.ABORT_WHEN_OCCUPIED,completion: CompletionHandler?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
userID | String? | 用户 ID。 |
targetIndex | Int | 目标麦位索引。 |
policy | 移动策略。 | |
completion | 完成回调。 |
上麦模式
setSeatMode
设置当前房间的上麦模式。设置成功之后,LiveSeatState.seatMode 状态会被更新,订阅它即可接收实时更新。
abstract fun setSeatMode(mode: SeatMode,completion: CompletionHandler?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
mode | 上麦模式(SeatMode.FREE 自由上麦 / SeatMode.APPLY 申请上麦)。 | |
completion | 完成回调(成功/失败状态)。 |
主咖管理
setFeaturedHost
设为主咖。
abstract fun setFeaturedHost(userID: String,completion: CompletionHandler?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
userID | String | 用户 ID。 |
completion | 完成回调。 |
revokeFeaturedHost
取消主咖。
abstract fun revokeFeaturedHost(userID: String,completion: CompletionHandler?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
userID | String | 用户 ID。 |
completion | 完成回调。 |
远程设备控制
openRemoteCamera
开启远程摄像头。
abstract fun openRemoteCamera(userID: String?,policy: DeviceControlPolicy,completion: CompletionHandler?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
userID | String? | 用户 ID。 |
policy | 设备控制策略。 | |
completion | 完成回调。 |
closeRemoteCamera
关闭远程摄像头。
abstract fun closeRemoteCamera(userID: String?,completion: CompletionHandler?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
userID | String? | 用户 ID。 |
completion | 完成回调。 |
openRemoteMicrophone
开启远程麦克风。
abstract fun openRemoteMicrophone(userID: String?,policy: DeviceControlPolicy,completion: CompletionHandler?)
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
userID | String? | 用户 ID。 |
policy | 设备控制策略。 | |
completion | 完成回调。 |
closeRemoteMicrophone
关闭远程麦克风。
abstract fun closeRemoteMicrophone(userID: String?,completion: CompletionHandler?)internal val hasAudioStreamUserList: MutableSet<String> = mutableSetOf()internal val hasVideoStreamUserList: MutableSet<String> = mutableSetOf()
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
userID | String? | 用户 ID。 |
completion | 完成回调。 |
数据结构
MoveSeatPolicy
移动麦位策略。
枚举值 | 说明 |
ABORT_WHEN_OCCUPIED | 被占用时中止。 |
FORCE_REPLACE | 强制替换。 |
SWAP_POSITION | 交换位置。 |
DeviceControlPolicy
设备控制策略。
枚举值 | 说明 |
UNLOCK_ONLY | 仅解锁。 |
SuspendStatus
用户的挂起状态。
枚举值 | 说明 |
NONE | 未挂起。 |
IN_BACKGROUND | 用户进入后台挂起。 |
IN_CALLING | 用户正在接听电话。 |
SeatMode
上麦模式。
枚举值 | 说明 |
FREE | 自由上麦。 |
APPLY | 申请上麦。 |
LiveSeatListener
麦位相关的回调事件。
方法
方法名 | 说明 |
onLocalCameraOpenedByAdmin | 当本地摄像头被管理员开启时触发此回调。 |
onLocalCameraClosedByAdmin | 当本地摄像头被管理员关闭时触发此回调。 |
onLocalMicrophoneOpenedByAdmin | 当本地麦克风被管理员开启时触发此回调。 |
onLocalMicrophoneClosedByAdmin | 当本地麦克风被管理员关闭时触发此回调。 |
SeatUserInfo
麦位用户信息。
属性 | 类型 | 说明 |
userID | String | 用户 ID。 |
userName | String | 用户名。 |
avatarURL | String | 头像 URL。 |
role | 用户角色。 | |
liveID | String | 直播间 ID。 |
microphoneStatus | 麦克风状态。 | |
allowOpenMicrophone | Boolean | 是否允许开启麦克风。 |
cameraStatus | 摄像头状态。 | |
allowOpenCamera | Boolean | 是否允许开启摄像头。 |
userSuspendStatus | 用户挂起状态。 |
RegionInfo
麦位视图坐标信息。
属性 | 类型 | 说明 |
x | Int | X 坐标。 |
y | Int | Y 坐标。 |
w | Int | 宽度。 |
h | Int | 高度。 |
zorder | Int | 层级顺序。 |
AVStatistics
音视频相关统计信息。
属性 | 类型 | 说明 |
userID | String | 用户 ID。 |
videoBitrate | Int | 本地视频的码率。 |
videoWidth | Int | 本地视频的宽度。 |
videoHeight | Int | 本地视频的高度。 |
frameRate | Int | 本地视频的帧率。 |
audioSampleRate | Int | 音频的采样率。 |
audioBitrate | Int | 音频码率。 |
SeatInfo
麦位信息。
属性 | 类型 | 说明 |
index | Int | 麦位索引。 |
isLocked | Boolean | 是否锁定。 |
userInfo | 用户信息。 | |
region | 区域信息。 | |
isFeaturedHost | Boolean | 当前麦位上的用户是否为主咖。仅在支持主咖位的麦位模板下可能为 true。 |
LiveCanvas
直播画布。
属性 | 类型 | 说明 |
w | Int | 宽度。 |
h | Int | 高度。 |
templateID | Int | 模板 ID。 |
LiveSeatState
LiveSeatStore 对外提供的麦位状态数据。
属性 | 类型 | 说明 |
seatList | 麦位列表。 | |
canvas | 画布信息。 | |
speakingUsers | StateFlow<MutableMap<String, Int>> | 正在说话的用户。 |
avStatistics | 音视频相关统计信息。 | |
seatMode | 当前房间的上麦模式,支持实时更新并可被订阅监听。 |