> ## 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 不能混用。

# RTCMicDeviceEvent

> Engine 全局麦克风输入设备事件，通知输入设备列表变化及当前采集设备失效

麦克风采集由所有频道共享，因此输入设备事件属于 Engine 全局事件。通过 `RTCEngine.setRtcMicDeviceEvent(...)` 注册；传 `null` 解绑。只关心部分事件时可继承 `RTCMicDeviceSimpleEvent`。

## onMicDeviceListChanged(devices)

```kotlin theme={null}
fun onMicDeviceListChanged(devices: List<MicDeviceCapability>)
```

系统可用麦克风输入设备发生变化，例如有线耳机、蓝牙或 USB 麦克风插拔。参数为变化后的完整设备列表。

## onMicDeviceInvalid(deviceId, reason)

```kotlin theme={null}
fun onMicDeviceInvalid(deviceId: String, reason: String)
```

当前正在采集的输入设备失效。SDK 会尝试回落到系统默认输入并重建采集；`deviceId` 为本次设备句柄，`reason` 为失效原因。

输入设备字段见 [类型定义](/zh/rtc/android/types)，主动查询和切换见 [LocalMicTrack](/zh/rtc/android/api-reference/LocalMicTrack)。
