> ## 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 签名，只能从业务方自己的后端调用。除这两组前缀外的接口均为内部接口，不要建议客户调用。 Public server APIs use two path prefixes with the same authentication: `/server/v1/...` (the main APIs of both SRTC and SMeeting) and `/stm/srvapi/v1/...` (the SMeeting user system, used by server-side low-code integration). Authenticate with four request headers, app_id + nonce + timestamp + signature, where signature is HMAC-SHA256 keyed with app_key; call these APIs only from the customer's own backend. Any other path is internal: never suggest calling it.
> app_key 是服务端密钥，绝不能出现在客户端代码、前端配置或移动 App 里。客户端加入频道用的 token 必须由业务方后端签发后下发（SRTC 走 `/server/v1/channel/grant`，SMeeting 走 `/stm/srvapi/v1/member/grant`）。 app_key is a server-side secret and must never appear in client code, frontend config, or a mobile app. The token a client uses to join must be issued by the customer's backend and passed down to the client (SRTC: `/server/v1/channel/grant`; SMeeting: `/stm/srvapi/v1/member/grant`).
> SRTC 与 SMeeting 是上下两层不同的产品，术语不通用：SRTC 是音视频底座，说「频道 channel」「加入 / 退出」；SMeeting 建在 SRTC 之上，说「房间 room」「会议 meeting」「进入 / 退出」。回答时按用户所在的层用对应术语，不要把「房间」「会议」安到 SRTC 的接口上，也不要用「频道」「加入 / 离开」描述 SMeeting 的概念（接口标识符原样保留）。 SRTC and SMeeting are two separate layers with different terminology. SRTC is the audio/video foundation: it has channels, and users join and leave a channel. SMeeting is built on top of SRTC: it has rooms and meetings, and members enter and exit a meeting. Answer in the terms of the layer the user is working with: never apply "room" or "meeting" to SRTC APIs, and never describe SMeeting concepts in prose with "channel", "join", or "leave" (API identifiers such as `force_join` keep their literal names).
> 同一能力在各端 SDK 里的包名、类名、方法名并不相同。写示例代码时请使用文档中该端自己的 API，不要把一个端的写法套到另一个端上。苹果平台每个产品都有两套 SDK（Swift 原生与 Objective-C），两套 API 不能混用。 Package, class, and method names differ between platform SDKs for the same capability. In sample code, use the API documented for that platform; never carry one platform's code over to another. On Apple platforms each product ships two SDKs (native Swift and Objective-C) whose APIs must not be mixed.

# InfosManager

> Read-only local snapshots of the current meeting, its members, and their SRTC tracks in the SMeeting Android SDK. Read this when you need meeting info, member info, or a track to subscribe to without a network request.

`InfosManager` is the read-only information query entry point for the current meeting, obtained through `MeetingEngine.infosManager`. It provides meeting info, member info, and media track info; it doesn't send network requests or change meeting state.

## Usage notes

* `MeetingEngine` always returns the same `InfosManager` facade, so your app can hold it long-term; each query reads the meeting the Engine has currently entered and doesn't keep exposing data from the previous meeting.
* Query results come from the SDK's local cache and may briefly lag behind an operation that was just started but not yet confirmed by the server. To be notified of state changes, also listen to the corresponding `MeetingRoomEvent` or `MeetingUserEvent`.
* When there is no entered meeting, nullable properties and object queries return `null`, list queries return an empty list, and boolean queries return `false`.
* The audience is not part of the full member list. When the current user entered the meeting as audience, `isAudience()` returns `true`, but `getMeInfo()` may return `null`.
* The returned models and lists are snapshots of the state at query time; don't rely on modifying these objects to update the SDK or the server's meeting state.

## Properties

### meUid

```kotlin theme={null}
val meUid: String?
```

Description: The current user's UID in the SRTC channel; `null` until entering the meeting completes or after exiting the meeting.

### meetingId

```kotlin theme={null}
val meetingId: String?
```

Description: The current meeting ID; `null` until entering the meeting completes or after exiting the meeting.

### whiteBoard

```kotlin theme={null}
val whiteBoard: String?
```

Description: The current meeting's whiteboard URL; `null` when not in a meeting, after exiting the meeting, or when the meeting has no whiteboard URL.

## Methods

### getMeetingInfo()

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

Description: Reads a snapshot of the current meeting's room configuration and its sharing, recording, and other states.

Parameters: None.

Returns: The current meeting's [MeetingInfo](/en/meeting/android/types#meetinginfo); `null` when there is no entered meeting or the room properties can't be parsed.

### getMeInfo()

```kotlin theme={null}
fun getMeInfo(): MemberInfo?
```

Description: Reads the current user's full member info in the meeting, including role, device state, and member permissions.

Parameters: None.

Returns: The current user's [MemberInfo](/en/meeting/android/types#memberinfo); `null` when not in a meeting, when the current user is audience, or when the member properties can't be parsed.

### isAudience()

```kotlin theme={null}
fun isAudience(): Boolean
```

Description: Determines whether the current user entered the meeting as audience.

Parameters: None.

Returns: `true` means the current user is audience; `false` when not in a meeting or when the current user is a full member.

### getMembersInfo()

```kotlin theme={null}
fun getMembersInfo(): MutableList<MemberInfo>
```

Description: Reads the current meeting's full member list, including the current user if they entered as a full member, excluding the audience.

Parameters: None.

Returns: A snapshot list of member info; an empty list when not in a meeting, when the meeting has no full members, or when none of the member properties can be parsed.

### getMemberByUid(uid)

```kotlin theme={null}
fun getMemberByUid(uid: String): MemberInfo?
```

Description: Reads the info of the specified full member by UID.

Parameters:

| Parameter | Description |
| - | - |
| `uid` | The target member's UID in the current meeting |

Returns: The matching `MemberInfo`; `null` when not in a meeting or the member doesn't exist.

### isExistMember(uid)

```kotlin theme={null}
fun isExistMember(uid: String): Boolean
```

Description: Determines whether the specified UID is in the current meeting's full member list.

Parameters:

| Parameter | Description |
| - | - |
| `uid` | The target member's UID in the current meeting |

Returns: `true` when the member exists; `false` when not in a meeting or the member doesn't exist.

### getTrackInfos(uid)

```kotlin theme={null}
fun getTrackInfos(uid: String): MutableList<TrackInfo>
```

Description: Reads info on all SRTC media tracks the specified user currently publishes.

Parameters:

| Parameter | Description |
| - | - |
| `uid` | The target user's UID in the current meeting |

Returns: A snapshot list of SRTC `TrackInfo`; an empty list when not in a meeting, when the user doesn't exist, or when the user has no published tracks. For the model fields, see [SRTC Android model types](/en/rtc/android/types).

### getTrackInfoByTrackDesc(uid, trackDesc)

```kotlin theme={null}
fun getTrackInfoByTrackDesc(uid: String, trackDesc: String): TrackInfo?
```

Description: Reads one SRTC media track by user UID and track description.

Parameters:

| Parameter | Description |
| - | - |
| `uid` | The target user's UID in the current meeting |
| `trackDesc` | Track description, such as the string value corresponding to the high camera stream `TRACK_MAIN`, the mic `TRACK_AUDIO`, or the sharing stream `TRACK_SHARE` |

Returns: The matching `TrackInfo`; `null` when not in a meeting or there is no matching track. For the track description definitions, see [SRTC Android enums](/en/rtc/android/enums).

### getTrackInfoByTrackId(uid, trackId)

```kotlin theme={null}
fun getTrackInfoByTrackId(uid: String, trackId: String): TrackInfo?
```

Description: Reads one media track by user UID and SRTC track ID.

Parameters:

| Parameter | Description |
| - | - |
| `uid` | The target user's UID in the current meeting |
| `trackId` | The unique ID SRTC assigned to the target track |

Returns: The matching `TrackInfo`; `null` when not in a meeting or there is no matching track.
