> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stmlink.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> 对外开放的服务端接口有两组前缀，都用同一套鉴权：`/server/v1/...`（SRTC 与 SMeeting 的主接口）和 `/stm/srvapi/v1/...`（SMeeting 的用户体系，服务端极简对接会用到）。鉴权是 app_id + nonce + timestamp + signature 四个请求头，用 app_key 做 HMAC-SHA256 签名，只能从业务方自己的后端调用。除这两组前缀外的接口均为内部接口，不要建议客户调用。
> app_key 是服务端密钥，绝不能出现在客户端代码、前端配置或移动 App 里。客户端加入频道用的 token 必须由业务方后端签发后下发（SRTC 走 `/server/v1/channel/grant`，SMeeting 走 `/stm/srvapi/v1/member/grant`）。
> SRTC 与 SMeeting 是上下两层不同的产品，术语不通用：SRTC 是音视频底座，说「频道 channel」「加入 / 退出」；SMeeting 建在 SRTC 之上，说「房间 room」「会议 meeting」「进入 / 退出」。回答时按用户所在的层用对应术语，不要把「房间」「会议」安到 SRTC 的接口上。
> 同一能力在各端 SDK 里的包名、类名、方法名并不相同。写示例代码时请使用文档中该端自己的 API，不要把一个端的写法套到另一个端上。苹果平台每个产品都有两套 SDK（Swift 原生与 Objective-C），两套 API 不能混用。

# MeetingRoomEvent

> 接收当前会议的房间配置、连接、主持人、录制、共享、举手、讨论组与签到事件

`MeetingRoomEvent` 承载当前会议的房间整体状态和连接生命周期，通过 `MeetingEngine.roomEvent` 注册。可继承 `MeetingRoomSimpleEvent` 按需覆写。

## 使用说明

* 房间级事件描述整场会议的共享状态、配置和生命周期；指定成员的设备、权限或轨道变化由 `MeetingUserEvent` 分发。

* 监听可在入会前赋值，以接收首次房间状态；离会后会被清除。

* 回调保持实际来源线程。`onDisconnected()` 表示底层已经真实断开，主动调用 `exitMeeting()` 不保证产生该回调。

## 房间与连接

### onMeetingUpdated(meetingInfo)

```kotlin theme={null}
fun onMeetingUpdated(meetingInfo: MeetingInfo?)
```

方法说明：当前会议房间信息刷新。

参数说明：

| 参数            | 说明                             |
| ------------- | ------------------------------ |
| `meetingInfo` | 更新后的房间快照；解析或生命周期边界下可能为 `null`。 |

返回值说明：无（`Unit`）。

### onDisconnected(reason, statusCode, message)

```kotlin theme={null}
fun onDisconnected(reason: LeaveReason, statusCode: Int, message: String?)
```

方法说明：当前会议已真实断开。

参数说明：

| 参数           | 说明         |
| ------------ | ---------- |
| `reason`     | SRTC 断开原因。 |
| `statusCode` | 底层状态码。     |
| `message`    | 可空诊断信息。    |

返回值说明：无（`Unit`）。

### onReconnecting()

```kotlin theme={null}
fun onReconnecting()
```

方法说明：当前会议连接开始自动重连。

参数说明：无。

返回值说明：无（`Unit`）。

### onReconnected()

```kotlin theme={null}
fun onReconnected()
```

方法说明：当前会议连接自动重连成功。

参数说明：无。

返回值说明：无（`Unit`）。

## 房间配置

### onRoomCameraStateChanged(operatorUid, selfUnMuteCameraDisabled, disabled)

```kotlin theme={null}
fun onRoomCameraStateChanged(
    operatorUid: String?,
    selfUnMuteCameraDisabled: Boolean,
    disabled: Boolean
)
```

方法说明：房间摄像头禁用与成员自行解除策略发生变化。

参数说明：

| 参数                         | 说明                       |
| -------------------------- | ------------------------ |
| `operatorUid`              | 操作者 UID；系统事件时可能为 `null`。 |
| `selfUnMuteCameraDisabled` | 是否禁止成员自行解除禁画。            |
| `disabled`                 | 是否全体禁画。                  |

返回值说明：无（`Unit`）。

### onRoomMicStateChanged(operatorUid, selfUnMuteMicDisabled, disabled)

```kotlin theme={null}
fun onRoomMicStateChanged(
    operatorUid: String?,
    selfUnMuteMicDisabled: Boolean,
    disabled: Boolean
)
```

方法说明：房间麦克风禁用与成员自行解除策略发生变化。

参数说明：

| 参数                      | 说明            |
| ----------------------- | ------------- |
| `operatorUid`           | 可空操作者 UID。    |
| `selfUnMuteMicDisabled` | 是否禁止成员自行解除禁音。 |
| `disabled`              | 是否全体禁音。       |

返回值说明：无（`Unit`）。

### onRoomChatDisabledChanged(operatorUid, disabled)

```kotlin theme={null}
fun onRoomChatDisabledChanged(operatorUid: String?, disabled: Boolean)
```

方法说明：房间聊天禁用状态变化。

参数说明：

| 参数            | 说明                       |
| ------------- | ------------------------ |
| `operatorUid` | 操作者 UID；系统事件时可能为 `null`。 |
| `disabled`    | `true` 表示禁止房间成员聊天。       |

返回值说明：无（`Unit`）。

### onRoomScreenshotDisabledChanged(operatorUid, disabled)

```kotlin theme={null}
fun onRoomScreenshotDisabledChanged(operatorUid: String?, disabled: Boolean)
```

方法说明：房间截屏禁用状态变化。

参数说明：

| 参数            | 说明                       |
| ------------- | ------------------------ |
| `operatorUid` | 操作者 UID；系统事件时可能为 `null`。 |
| `disabled`    | `true` 表示禁止房间成员截屏。       |

返回值说明：无（`Unit`）。

### onRoomWatermarkDisabledChanged(operatorUid, disabled)

```kotlin theme={null}
fun onRoomWatermarkDisabledChanged(operatorUid: String?, disabled: Boolean)
```

方法说明：房间水印禁用状态变化。

参数说明：

| 参数            | 说明                       |
| ------------- | ------------------------ |
| `operatorUid` | 操作者 UID；系统事件时可能为 `null`。 |
| `disabled`    | `true` 表示禁用房间水印。         |

返回值说明：无（`Unit`）。

### onRoomLockedChanged(operatorUid, locked)

```kotlin theme={null}
fun onRoomLockedChanged(operatorUid: String?, locked: Boolean)
```

方法说明：房间锁定状态变化。

参数说明：

| 参数            | 说明                       |
| ------------- | ------------------------ |
| `operatorUid` | 操作者 UID；系统事件时可能为 `null`。 |
| `locked`      | `true` 表示房间已经锁定。         |

返回值说明：无（`Unit`）。

### onWaitingRoomDisabledChanged(operatorUid, disabled)

```kotlin theme={null}
fun onWaitingRoomDisabledChanged(operatorUid: String?, disabled: Boolean)
```

方法说明：等候室启停状态变化。

参数说明：

| 参数            | 说明                       |
| ------------- | ------------------------ |
| `operatorUid` | 操作者 UID；系统事件时可能为 `null`。 |
| `disabled`    | `true` 表示等候室已经禁用。        |

返回值说明：无（`Unit`）。

### onRoomHostMove(sourceUid, targetUid)

```kotlin theme={null}
fun onRoomHostMove(sourceUid: String?, targetUid: String?)
```

方法说明：主持人身份从原成员转移到目标成员。

参数说明：

| 参数          | 说明                   |
| ----------- | -------------------- |
| `sourceUid` | 原主持人 UID，可能为 `null`。 |
| `targetUid` | 新主持人 UID，可能为 `null`。 |

返回值说明：无（`Unit`）。

## 录制、共享与举手

### onCloudRecordStatusChange(type, status, errorMessage)

```kotlin theme={null}
fun onCloudRecordStatusChange(
    type: CloudRecordType,
    status: CloudRecordStatus,
    errorMessage: String
)
```

方法说明：云录制任务状态变化。

参数说明：

| 参数             | 说明                |
| -------------- | ----------------- |
| `type`         | 录制任务类型。           |
| `status`       | 当前任务状态。           |
| `errorMessage` | 异常信息；无异常时通常为空字符串。 |

返回值说明：无（`Unit`）。

### onMcuAlarmReceived(operatorUid, alarm)

```kotlin theme={null}
fun onMcuAlarmReceived(operatorUid: String, alarm: McuAlarm)
```

方法说明：收到 MCU 私发告警。

参数说明：

| 参数            | 说明             |
| ------------- | -------------- |
| `operatorUid` | 消息发送方 UID。     |
| `alarm`       | 任务、网关、时间和摘要信息。 |

返回值说明：无（`Unit`）。

### onRoomShareStart(shareUid, shareType)

```kotlin theme={null}
fun onRoomShareStart(shareUid: String?, shareType: ShareType)
```

方法说明：指定成员开始屏幕或白板共享。

参数说明：

| 参数          | 说明                       |
| ----------- | ------------------------ |
| `shareUid`  | 共享者 UID；无法确定时可能为 `null`。 |
| `shareType` | 开始的共享类型。                 |

返回值说明：无（`Unit`）。

### onRoomShareStop(shareUid, shareType)

```kotlin theme={null}
fun onRoomShareStop(shareUid: String?, shareType: ShareType)
```

方法说明：指定成员结束屏幕或白板共享。

参数说明：

| 参数          | 说明                       |
| ----------- | ------------------------ |
| `shareUid`  | 共享者 UID；无法确定时可能为 `null`。 |
| `shareType` | 结束的共享类型。                 |

返回值说明：无（`Unit`）。

### onAdminRoomShareStop(shareUid, shareType)

```kotlin theme={null}
fun onAdminRoomShareStop(shareUid: String, shareType: ShareType)
```

方法说明：主持人强制结束指定成员共享。

参数说明：

| 参数          | 说明            |
| ----------- | ------------- |
| `shareUid`  | 被停止共享的成员 UID。 |
| `shareType` | 被停止的共享类型。     |

返回值说明：无（`Unit`）。

### onRoomHandUpChanged(operatorUid, enabled, handUpType)

```kotlin theme={null}
fun onRoomHandUpChanged(
    operatorUid: String?,
    enabled: Boolean?,
    handUpType: HandUpType?
)
```

方法说明：房间成员举手状态变化。

参数说明：

| 参数            | 说明                                  |
| ------------- | ----------------------------------- |
| `operatorUid` | 可空成员 UID。                           |
| `enabled`     | `true` 举手，`false` 取消；无法解析时为 `null`。 |
| `handUpType`  | 举手类型；无法解析时为 `null`。                 |

返回值说明：无（`Unit`）。

## 讨论组与签到

### onAdminRoomStartSubMeeting(subMeetingId, subTitle, uids)

```kotlin theme={null}
fun onAdminRoomStartSubMeeting(
    subMeetingId: String,
    subTitle: String,
    uids: List<String>
)
```

方法说明：主持人启动指定讨论组。

参数说明：

| 参数             | 说明                 |
| -------------- | ------------------ |
| `subMeetingId` | 启动的讨论组会议 ID。       |
| `subTitle`     | 讨论组标题。             |
| `uids`         | 分配到该讨论组的成员 UID 列表。 |

返回值说明：无（`Unit`）。

### onAdminRoomStopSubMeeting(mainMeetingId, subMeetingId, subTitle)

```kotlin theme={null}
fun onAdminRoomStopSubMeeting(
    mainMeetingId: String,
    subMeetingId: String,
    subTitle: String
)
```

方法说明：主持人结束指定讨论组。

参数说明：

| 参数              | 说明           |
| --------------- | ------------ |
| `mainMeetingId` | 主会议 ID。      |
| `subMeetingId`  | 结束的讨论组会议 ID。 |
| `subTitle`      | 讨论组标题。       |

返回值说明：无（`Unit`）。

### onSignInActivity(hostName, epoch, beginAt, duration, endAt, description)

```kotlin theme={null}
fun onSignInActivity(
    hostName: String,
    epoch: Int,
    beginAt: Long,
    duration: Int,
    endAt: Long,
    description: String
)
```

方法说明：收到会中签到活动开始消息。

参数说明：

| 参数            | 说明                   |
| ------------- | -------------------- |
| `hostName`    | 发起人昵称。               |
| `epoch`       | 签到轮次。                |
| `beginAt`     | 开始时间，秒级时间戳。          |
| `duration`    | 持续时长，单位分钟；`0` 表示不限时。 |
| `endAt`       | 结束时间，秒级时间戳。          |
| `description` | 签到说明。                |

返回值说明：无（`Unit`）。

### onSignInFinish(hostName, epoch)

```kotlin theme={null}
fun onSignInFinish(hostName: String, epoch: Int)
```

方法说明：收到会中签到活动结束消息。

参数说明：

| 参数         | 说明          |
| ---------- | ----------- |
| `hostName` | 结束活动的主持人昵称。 |
| `epoch`    | 签到轮次。       |

返回值说明：无（`Unit`）。
