
# 事件回调（IHRTCEngineEventHandler）
本章节介绍了Android SDK的回调接口IHRTCEngineEventHandler的详情。
表1回调接口 
| 接口                                                                                | 描述                |
|:---|:---|
| [onError]                                     | 错误回调              |
| [onJoinRoomSuccess]                          | 加入房间成功回调          |
| [onJoinRoomFailure]                            | 加入房间失败回调          |
| [onLeaveRoom]                                  | 离开房间回调            |
| [onRemoteUserOnline]                         | 用户加入房间回调          |
| [onRemoteUserOffline]                          | 用户离开房间回调          |
| [onConnectionChangedNotify]                    | 网络连接状态改变回调        |
| [onLogUploadResult]                              | 日志上传结果回调          |
| [onLogUploadProgress]                          | 日志上传进度回调          |
| [onUserRoleChangedNotify]                     | 用户角色改变回调          |
| [onAudioRouteStateChangedNotify]                | 音频路由改变回调          |
| [onUserAuxiliaryStreamAvailable]              | 辅流加入房间回调          |
| [onRenderExternalVideoFrame]                  | 回调远端的视频原始数据流      |
| [onPlaybackExternalAudioFrame]                | 回调远端的音频原始数据流      |
| [onVideoStatsNotify]                          | 视频流详情，2s触发一次回调    |
| [onAudioStatsNotify]                          | 音频流详情，2s触发一次回调    |
| [onAuxiliaryStreamStatsNotify]                 | 辅流详情，2s触发一次回调     |
| [onRemoteAudioStateChangedNotify]            | 远端音频流状态变化回调       |
| [onRemoteVideoStateChangedNotify]              | 远端视频流状态变化回调       |
| [onRejoinRoomSuccess]                         | 重新加入房间回调          |
| [onUserVolumeStatsNotify]                     | 提示频道远端用户以及自己的音量回调 |
| [onNetworkTestQuality]                         | 会前网络探测质量上报回调      |
| [onNetworkTestResult]                          | 会前网络探测结果上报回调      |
| [onFirstRemoteVideoDecoded]                  | 远端用户第一帧解码成功回调     |
| [onFirstRemoteAuxiliaryStreamDecoded]           | 收到第一帧远端辅流并解码成功回调  |
| [onAuthorizationExpired]                     | 签名过期回调            |
| [onNetworkQualityNotify]                     | 加入房间后的网络质量状态回调    |
| [onLocalAudioStateChangedNotify]              | 本地音频流状态变化回调       |
| [onLocalVideoStateChangedNotify]              | 本地视频流状态变化回调       |
| [onScreenShareStarted] | 辅流开启回调            |
| [onScreenShareStopped]                       | 辅流改变回调            |
| [onMediaConnectStateChangedNotify]            | 媒体连接状态变化通知        |
| [onUserNameChangedNotify]                     | 本端修改昵称结果通知        |
| [onRemoteUserNameChangedNotify]                | 远端用户昵称变更通知        |
| [onFirstLocalAudioFrame]                          | 本地音频首帧发送回调        |
| [onFirstLocalVideoFrameNotify]               | 本地视频首帧渲染回调        |
| [onLocalVideoStatsNotify]                     | 本端视频统计回调          |
| [onRemoteVideoStatsNotify]                     | 远端视频统计回调          |
| [onLocalAudioStatsNotify]                    | 本端音频统计回调          |
| [onRemoteAudioStatsNotify]                    | 远端音频统计回调          |
| [onVideoResolutionChangedNotify]              | 远端视频大小流改变回调       |
| [onStatsNotify]                               | 当前会话统计回调          |
| [onAudioMixStateChangedNotify]                  | 混音音频文件播放状态改变回调    |
| [onAudioFileFinished]                         | 音频文件播放结束回调        |
| [onAudioClipFinished]                          | 音效文件播放结束回调        |
| [onSeiSendMsgSuccess]                         | 音频SEI信息发送成功回调     |
| [onSeiRecvMsg]                              | 接收音频SEI信息回调       |
| [onStartPublishStream]                       | 开始旁路（RTMP）推流回调    |
| [onUpdateTransCoding]                       | 更新旁路（RTMP）推流消息    |
| [onStopPublishStream]                         | 停止旁路（RTMP）推流消息    |
| [onStreamPublishStateChange]                  | RTMP推流状态回调        |
| [onLocalAudioMutedStatusDetected]               | 本端禁音状态回调          |
| [onTopActiveSpeaker]                          | 远端音频最活跃用户回调       |
| [onRemoteMicrophoneStateChanged]              | 远端麦克风设备状态变更通知     |
| [onUserNetworkQualityNotify]                     | 用户级网络质量回调         |
| [onMultiRoomMediaRelayStateChanged]           | 跨房状态改变回调          |
   
 #### onError
```
void onError(int error, String msg);
```
【**功能说明**】
错误回调。
【**回调参数** 】
- error：错误码，具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
- msg：错误描述。
 
 #### onJoinRoomSuccess
```
void onJoinRoomSuccess(String roomId, String userId);
```
【**功能说明**】
成功加入房间回调。
【**回调参数** 】
- roomId：房间ID。
- userId：用户ID。
 
 #### onJoinRoomFailure
```
void onJoinRoomFailure(int error, String msg);
```
【**功能说明**】
加入房间失败回调。
【**回调参数**】
- error：错误码。
- msg：错误信息。
 
 #### onLeaveRoom
```
void onLeaveRoom(HRTCLeaveReason reason, HRTCStatsInfo statsInfo);
```
【**功能说明**】
离开房间回调。
【**回调参数** 】
- reason：自己离开房间的原因，具体请参见[HRTCLeaveReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section207822774414)。
- statsInfo：会议期间的统计信息，具体请参见[HRTCStatsInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section451795725415)。
 
 #### onRemoteUserOnline
```
void onRemoteUserOnline(String roomId, String userId, String userName);
```
【**功能说明**】
用户加入房间成功回调，不包括自己。
【**回调参数**】
- roomId：房间ID。
- userId：用户ID。
- userName：用户名称。
 
 #### onRemoteUserOffline
```
void onRemoteUserOffline(String roomId, String userId, int reason);
```
【**功能说明**】
用户离开房间回调。
【**回调参数**】
- roomId：房间ID。
- userId：用户ID。
- reason：预留字段。
 
 #### onConnectionChangedNotify
```
void onConnectionChangedNotify(HRTCConnStateTypes connStateTypes, HRTCConnChangeReason connChangeReason, String description);
```
【**功能说明**】
网络连接状态改变。
【**回调参数** 】
- connStateTypes：网络连接状态，具体请参见[HRTCConnStateTypes](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1143012526423)。
- connChangeReason：网络连接状态原因，具体请参见[HRTCConnChangeReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section17275040104313)。
- description：描述。
 
 #### onLogUploadResult
```
void onLogUploadResult(int result);
```
【**功能说明**】
日志上传结果回调。
【**回调参数**】
result：日志上传结果，0表示成功，1表示失败。
 #### onLogUploadProgress
```
void onLogUploadProgress(int progress);
```
【**功能说明**】
日志上传进度回调。
【**回调参数**】
progress：进度，取值范围为\[0,100\]。
 #### onUserRoleChangedNotify
```
void onUserRoleChangedNotify(String roomId, HRTCRoleType oldRole, HRTCRoleType newRole);
```
【**功能说明**】
用户角色改变。
【**回调参数** 】
- roomId：发生角色切换的房间号。
- oldRole：改变前的角色，具体请参见[HRTCRoleType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1130451518425)。
- newRole：改变后的角色，具体请参见[HRTCRoleType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1130451518425)。
 
 #### onAudioRouteStateChangedNotify
```
void onAudioRouteStateChangedNotify(HRTCAudioRoute route);
```
【**功能说明**】
音频路由改变。
【**回调参数**】
route：音频路由，具体请参见[HRTCAudioRoute](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section18630124994113)。
 #### onUserAuxiliaryStreamAvailable
```
void onUserAuxiliaryStreamAvailable(String roomId, String userId, boolean available);
```
【**功能说明**】
辅流加入房间。
【**回调参数**】
- roomId：房间ID。
- userId：用户ID。
- available：true表示辅流开始推送，false表示辅流停止推送，提示用户关闭共享。
 
 #### onRenderExternalVideoFrame
```
void onRenderExternalVideoFrame(String roomId, HRTCMediaDirection direction, String userId, HRTCVideoFrame videoFrame);
```
【**功能说明**】
回调远端的视频原始数据流。
【**回调参数**】
- roomId：房间ID。
- userId：用户ID。
- videoFrame：视频数据。
- direction：数据源，本地数据，远端数据，具体请参见[HRTCMediaDirection](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section19900291817)。
 
 #### onPlaybackExternalAudioFrame
```
void onPlaybackExternalAudioFrame(String roomId,HRTCMediaDirection direction, HRTCAudioFrame audioFrame);
```
【**功能说明**】
回调远端的音频原始数据流。
【**回调参数**】
- roomId：房间ID。
- audioFrame：音频数据，具体请参见[HRTCAudioFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section182495551815)。
- direction：数据源，本地数据，远端数据，具体请参见[HRTCMediaDirection](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section19900291817)。
 
 #### onVideoStatsNotify
```
void onVideoStatsNotify(List<HRTCLocalVideoStats> localStats, List<HRTCRemoteVideoStats> remoteStats);
```
【**功能说明**】
视频流详情，2s触发一次回调。
【**回调参数**】
- localStats：本地视频发流详情参数，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section10761129182318)。
- remoteStats：远端视频收流详情参数，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section34941520192413)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
只有本地一个用户入会时，不回调该方法。
 #### onAudioStatsNotify
```
void onAudioStatsNotify(List<HRTCLocalAudioStats> localStats, List<HRTCRemoteAudioStats> remoteStats);
```
【**功能说明**】
音频流详情，2s触发一次回调。
【**回调参数**】
- localStats：本地音频发流详情，具体请参见[HRTCLocalAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section17479113842318)。
- remoteStats：远端音频收流详情，具体请参见[HRTCRemoteAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1986482818245)。
 
 #### onAuxiliaryStreamStatsNotify
```
void onAuxiliaryStreamStatsNotify(List<HRTCLocalVideoStats> localStats, List<HRTCRemoteVideoStats> remoteStats);
```
【**功能说明**】
辅流详情，2s触发一次回调。
【**回调参数**】
- localStats：本地辅流的发流详情，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section10761129182318)。
- remoteStats：远端辅流的收流详情，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section34941520192413)。
 
 #### onRemoteAudioStateChangedNotify
```
void onRemoteAudioStateChangedNotify(String userId, HRTCRemoteAudioStreamState state, HRTCRemoteAudioStreamStateReason reason);
```
【**功能说明**】
远端音频流状态变化回调。
【**回调参数**】
- userId：远端用户ID。
- state：远端音频流状态，具体请参见[HRTCRemoteAudioStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1037761017453)。
- reason：远端音频流状态变化原因，具体请参见[HRTCRemoteAudioStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1272173884515)。
 
 #### onRemoteVideoStateChangedNotify
```
void onRemoteVideoStateChangedNotify(String userId, HRTCRemoteVideoStreamState state, HRTCRemoteVideoStreamStateReason reason);
```
【**功能说明**】
远端视频流状态变化回调。
【**回调参数**】
- userId：远端用户ID。
- state：远端视频流状态，具体请参见[HRTCRemoteVideoStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section8616181318312)。
- reason：远端视频流状态变化原因，具体请参见[HRTCRemoteVideoStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section163781283461)。
 
 #### onRejoinRoomSuccess
```
void onRejoinRoomSuccess(String roomId, String userId);
```
【**功能说明**】
重新加入房间回调。例如，网络异常后重连成功加入房间时触发。
【**回调参数**】
- roomId：房间ID。
- userId：用户ID。
 
 #### onUserVolumeStatsNotify
```
void onUserVolumeStatsNotify(List<HRTCVolumeInfo> volumeInfos, int totalVolume);
```
【**功能说明**】
提示频道远端用户以及自己的音量回调。
【**回调参数** 】
- volumeInfos：回调发言人信息列表，目前最多支持4人，包括自己，具体请参见[HRTCVolumeInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section8783112315148)。
- totalVolume：远端混音后的总音量。
 
 #### onNetworkTestQuality
```
void onNetworkTestQuality(HRTCNetworkQualityLevel level);
```
【**功能说明**】
会前网络探测质量上报，探测成功后每隔两秒刷新该level值。
【**回调参数**】
level：具体请参见[HRTCNetworkQualityLevel](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section72827794713)。
 #### onNetworkTestResult
```
void onNetworkTestResult(HRTCNetworkTestResult networkTestResult);
```
【**功能说明**】
会前网络探测结果上报，如果探测成功，该回调会在探测30s后上报，如果失败随时上报。
【**回调参数**】
networkTestResult：网络探测结果数据，具体请参见[HRTCNetworkTestResult](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1134139471)。
 #### onFirstRemoteVideoDecoded
```
void onFirstRemoteVideoDecoded(String roomId, final String userId, int width, int height);
```
【**功能说明**】
远端用户第一帧解码成功回调。
【**回调参数**】
- roomId：房间ID。
- userId：用户ID。
- width：视频宽度。
- height：视频高度。
 
 #### onFirstRemoteAuxiliaryStreamDecoded
```
void onFirstRemoteAuxiliaryStreamDecoded(String roomId, String userId, int width, int height);
```
【**功能说明**】
接收到第一帧远端辅流并解码成功，触发此回调。
【**回调参数**】
- roomId：视频流对应的房间ID。
- userId：视频流对应的用户ID。
- width：视频流宽。
- height：视频流高。
 
 #### onAuthorizationExpired
```
void onAuthorizationExpired();
```
【**功能说明**】
签名过期回调，需要app调用[renewAuthorization](https://support.huaweicloud.com/csdk-rtc/rtc_05_0014.html#rtc_05_0014__section1149915116525)更新签名。
【**回调参数**】
无
 #### onNetworkQualityNotify
```
void onNetworkQualityNotify(List<HRTCQualityInfo> upStreamQuality, List<HRTCQualityInfo> downStreamQuality);
```
【**功能说明**】
加入房间后，基于流级别的网络质量状态回调。音频流、视频流分别回调。
【**回调参数**】
- 本端开始推流后，本端才会开始收到网络质量回调。
- upStreamQuality：上行网络质量状态，具体请参见[HRTCQualityInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1275219474393)。当前不可用。
- downStreamQuality：下行网络质量状态，具体请参见[HRTCQualityInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1275219474393)。
 
 #### onLocalAudioStateChangedNotify
```
void onLocalAudioStateChangedNotify(HRTCLocalAudioStreamState state, HRTCLocalAudioStreamStateReason reason);
```
【**功能说明**】
本地音频流状态变化回调。
【**回调参数**】
- state：本地音频流状态，具体请参见[HRTCLocalAudioStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section27791115142615)。
- reason：本地音频流状态变化原因，具体请参见[HRTCLocalAudioStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section187787153264)。
 
 #### onLocalVideoStateChangedNotify
```
void onLocalVideoStateChangedNotify(HRTCLocalVideoStreamState state, HRTCLocalVideoStreamStateReason reason);
```
【**功能说明**】
本地视频流状态变化回调。
【**回调参数**】
- state：本地视频流状态，具体请参见[HRTCLocalVideoStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section17801015122619)。
- reason：本地视频流状态变化原因，具体请参见[HRTCLocalVideoStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section278181542617)
 
 #### onScreenShareStarted
```
void onScreenShareStarted();
```
【**功能说明**】
屏幕流共享开启，触发此回调。
 #### onScreenShareStopped
```
void onScreenShareStopped(int reason)
```
【**功能说明**】
屏幕流共享状态改变，触发此回调。
【**回调参数**】
reason：屏幕共享状态改变原因。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- SDK 1.7.1及以上版本支持。
- reason：预留参数。
 
 #### onMediaConnectStateChangedNotify
```
void onMediaConnectStateChangedNotify(HRTCMediaConnStateTypes state, HRTCMediaConnChangeReason reason, String description);
```
【**功能说明**】
媒体服务器连接状态变更通知。
【**回调参数**】
- state：连接状态，具体请参见[HRTCMediaConnStateTypes](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section171141341155620)。
- reason：连接状态变化的原因，具体请参见[HRTCMediaConnChangeReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section545124317564)。
- description：连接状态变化原因描述。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
加入房间过后，收到媒体服务的数据包时，返回Connected消息，超过6s没有收到包，则返回Failed消息。
 #### onUserNameChangedNotify
```
void onUserNameChangedNotify(String oldUserName, String newUserName);
```
【**功能说明**】
调用changeUserName接口成功后，上报此事件通知修改昵称结果。
【**回调参数**】
- oldUserName：修改前昵称。
- newUserName：修改后昵称。
 
 #### onRemoteUserNameChangedNotify
```
void onRemoteUserNameChangedNotify(String roomId，String userId, String userName);
```
【**功能说明**】
远端用户修改昵称后，通知本端昵称变更。
【**回调参数**】
- userId：修改昵称的用户id。
- userName：修改后的昵称。
- roomId：修改昵称的房间。
 
 #### onFirstLocalAudioFrame
```
void onFirstLocalAudioFrame(int elapsed);
```
【**功能说明**】
本地音频首帧发送回调。
【**回调参数**】
elapsed：从入会到本地音频首帧发送所用的时间，单位为ms。
 #### onFirstLocalVideoFrameNotify
```
void onFirstLocalVideoFrameNotify(int elapsed);
```
【**功能说明**】
本地视频首帧渲染回调。
【**回调参数**】
elapsed：从开始采集到本地视频首帧渲染所用的时间，单位为ms。
 #### onLocalVideoStatsNotify
```
void onLocalVideoStatsNotify(List<HRTCLocalVideoStats> localStats);
```
【**功能说明**】
本端视频流详情，2s触发一次回调。
【**回调参数**】
localStats：本地视频发流详情参数，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section10761129182318)。
 #### onRemoteVideoStatsNotify
```
void onRemoteVideoStatsNotify(List<HRTCRemoteVideoStats> remoteStats);
```
【**功能说明**】
远端视频流详情，2s触发一次回调。
【**回调参数**】
remoteStats：远端视频收流详情参数，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section34941520192413)。
 #### onLocalAudioStatsNotify
```
void onLocalAudioStatsNotify(List<HRTCLocalAudioStats> localStats);
```
【**功能说明**】
本端音频流详情，2s触发一次回调。
【**回调参数**】
localStats：本地音频发流详情，具体请参见[HRTCLocalAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section17479113842318)。
 #### onRemoteAudioStatsNotify
```
void onRemoteAudioStatsNotify(List<HRTCRemoteAudioStats> remoteStats);
```
【**功能说明**】
远端音频流详情，2s触发一次回调。
【**回调参数**】
remoteStats：远端音频收流详情，具体请参见[HRTCRemoteAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1986482818245)。
 #### onVideoResolutionChangedNotify
```
void onVideoResolutionChangedNotify(String userid, int width, int height);
```
【**功能说明**】
远端视频大小改变回调。
【**回调参数**】
- userId：用户ID。
- width：视频流宽度。
- height：视频流高度。
 
 #### onStatsNotify
```
void onStatsNotify(List<HRTCOnStats> hrtcOnStats);
```
【**功能说明**】
当前会话统计回调。
【**回调参数**】
hrtcOnStats：会话统计信息，具体请参见[HRTCOnStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1852195962619)。
 #### onAudioMixStateChangedNotify
```
void onAudioMixStateChangedNotify(HRTCAudioFileState state, HRTCAudioFileReason reason, long value);
```
【**功能说明**】
音频文件播放状态改变回调。
【**回调参数** 】
- state：音频文件播放状态，具体请参见[HRTCAudioFileState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section84272774717)。
- reason：音频文件播放状态变化原因，具体请参见[HRTCAudioFileReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section18807173319112)。
- value：state为HRTC_AUDIO_FILE_OPEN_COMPLETED表示音频文件的时长，单位为ms；state为HRTC_AUDIO_FILE_POSITION_UPDATE表示当前播放的位置，单位为ms。其他情况下，value值无意义。
 
 #### onAudioFileFinished
```
void onAudioFileFinished();
```
【**功能说明**】
音频文件播放结束回调。
【**回调参数**】
无
 #### onAudioClipFinished
```
void onAudioClipFinished(int soundId);
```
【**功能说明**】
音效文件播放结束回调。
【**回调参数**】
soundId：音效ID，取值\>= 0。
 #### onSeiSendMsgSuccess
```
void onSeiSendMsgSuccess(String message);
```
【**功能说明**】
音频SEI信息发送成功回调。
【**回调参数**】
message：发送SEI信息的内容。
 #### onSeiRecvMsg
```
void onSeiRecvMsg(String userId, String message);
```
【**功能说明**】
接收音频SEI信息回调。
【**回调参数**】
- userId：用户ID。
- message：接收SEI信息的内容。
 
#### onError
```
virtual void onError(IHRTCConnection* conn, int error, const char* msg)
```
【**功能说明**】
发生错误，触发此回调。返回客户端错误码或者服务端错误码。
【**回调参数**】
- conn：连接对象。
- error：错误码，具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
- msg：错误描述。
 
#### onConnectionChangedNotify
```
virtual void onConnectionChangedNotify(IHRTCConnection* conn, HRTCConnStateType state, HRTCConnChangeReason reason, const char* description)
```
【**功能说明**】
连接状态改变回调。
【**回调参数**】
- conn：连接对象。
- state：连接状态类型，具体请参见[HRTCConnStateTypes](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1143012526423)。
- reason：连接状态改变原因，具体请参见[HRTCConnChangeReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section17275040104313)。
- description：连接状态改变描述。
 
#### onAuthorizationExpired
```
virtual void onAuthorizationExpired(IHRTCConnection* conn);
```
【**功能说明**】
鉴权签名过期回调，需要app调用[renewAuthorization](https://support.huaweicloud.com/csdk-rtc/rtc_05_0014.html#rtc_05_0014__section1149915116525)更新签名。
【**回调参数**】
conn：连接对象。
#### onJoinRoomSuccess
```
virtual void onJoinRoomSuccess(IHRTCConnection* conn, const char* userId)
```
【**功能说明**】
成功加入房间，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：新加入房间的用户ID。
 
#### onJoinRoomFailure
```
virtual void onJoinRoomFailure(IHRTCConnection* conn, int error, const char* msg)
```
【**功能说明**】
加入房间失败，触发此回调。
【**回调参数**】
- conn：连接对象。
- error：错误码，具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
- msg：错误描述。
 
#### onRejoinRoomSuccess
```
virtual void onRejoinRoomSuccess(IHRTCConnection* conn, const char* userId)
```
【**功能说明**】
重新加入房间回调。例如，网络异常后重连成功加入房间触发。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
 
#### onLeaveRoom
```
virtual void onLeaveRoom(IHRTCConnection* conn, HRTCLeaveReason reason, const HRTCStatsInfo &statsInfo)
```
【**功能说明**】
离开房间，触发此回调。
【**回调参数**】
- conn：连接对象。
- reason：离开的房间原因，具体请参见[HRTCLeaveReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section207822774414)。
- statsInfo：卡顿统计信息，具体请参见[HRTCStatsInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section451795725415)。
 
 #### onUserRoleChangedNotify
```
virtual void onUserRoleChangedNotify(IHRTCConnection* conn, HRTCRoleType oldRole, HRTCRoleType newRole)
```
【**功能说明**】
用户角色切换成功，触发此回调。
【**回调参数**】
- conn：连接对象。

- oldRole：切换前的角色。具体请参见[HRTCRoleType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1130451518425)。
- newRole：切换成功后的角色。具体请参见[HRTCRoleType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1130451518425)。
 
#### onRemoteUserOnline
```
virtual void onRemoteUserOnline(IHRTCConnection* conn, const char* userId, const char* userName)
```
【**功能说明**】
远端joiner用户加入当前房间，触发此回调。该回调提示有远端joiner用户加入了房间，并返回新加入用户的ID。
【**回调参数**】
- conn：连接对象。
- userId：远端用户ID。
- userName：远端用户昵称。
 
#### onRemoteUserOffline
```
virtual void onRemoteUserOffline(IHRTCConnection* conn, const char* userId, int reason)
```
【**功能说明**】
远端joiner用户离开当前房间，触发此回调。
本端用户离开当前房间，会回调当前房间所有用户offline。
【**回调参数**】
- conn：连接对象。
- userId：离开房间的远端用户ID。
- reason：远端用户离线原因，预留参数。
 
#### onRemoteUserNameChangedNotify
```
virtual void onRemoteUserNameChangedNotify(IHRTCConnection* conn, const char* userId, const char* userName)
```
【**功能说明**】
远端用户昵称变化，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
- userName：变更后的昵称。
 
#### onUserNameChangedNotify
```
virtual void onUserNameChangedNotify(IHRTCConnection* conn, const char* oldUserName, const char* newUserName)
```
【**功能说明**】
本端用户昵称变化，触发此回调。
【**回调参数**】
- conn：连接对象。
- oldUserName：变更前的昵称。
- newUserName：变更后的昵称。
 
#### onRemoteAudioStateChangedNotify
```
virtual void onRemoteAudioStateChangedNotify(IHRTCConnection* conn, const char* userId, HRTCRemoteAudioStreamState state, HRTCRemoteAudioStreamStateReason reason)
```
【**功能说明**】
远端音频流状态变化回调。
【**回调参数**】
- conn：连接对象。
- userId：远端用户ID。
- state：远端音频流状态，具体请参见[HRTCRemoteAudioStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1037761017453)。
- reason：远端音频流状态变化原因，具体请参见[HRTCRemoteAudioStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1272173884515)。
 
#### onRemoteVideoStateChangedNotify
```
virtual void onRemoteVideoStateChangedNotify(IHRTCConnection* conn, const char* userId, HRTCRemoteVideoStreamState state, HRTCRemoteVideoStreamStateReason reason)
```
【**功能说明**】
远端视频流状态变化回调。
【**回调参数**】
- conn：连接对象。
- userId：远端用户ID。
- state：远端视频流状态，具体请参见[HRTCRemoteVideoStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section8616181318312)。
- reason：远端视频流状态变化原因，具体请参见[HRTCRemoteVideoStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section163781283461)。
 
#### onUserVolumeStatsNotify
```
virtual void onUserVolumeStatsNotify(IHRTCConnection* conn, const HRTCVolumeInfo* userVolumes, unsigned int userVolumesCount, unsigned int totalVolume)
```
【**功能说明**】
用户音量状态回调。通过[enableUserVolumeNotify](https://support.huaweicloud.com/csdk-rtc/rtc_05_0020.html#rtc_05_0020__section16217114063820)开启并设置回调周期，定时上报。
【**回调参数**】
- conn：连接对象。
- userVolumes：HRTCVolumeInfo，userId，volume。
- userVolumesCount：音量上报用户数组的大小。
- totalVolume：总音量。
 
#### onUserAuxiliaryStreamAvailable
```
virtual void onUserAuxiliaryStreamAvailable(IHRTCConnection* conn, const char* userId, bool available)
```
【**功能说明**】
远端开启，停止辅流后，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：远端用户ID。
- available：true表示远端开启推辅流，false表示远端停止辅流。
 
#### onFirstRemoteVideoDecoded
```
virtual void onFirstRemoteVideoDecoded(IHRTCConnection* conn, const char* userId, int width, int height)
```
【**功能说明**】
远端用户视频流第一帧解码成功，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
- width：视频宽。
- height：视频高。
 
#### onFirstRemoteAuxiliaryStreamDecoded
```
virtual void onFirstRemoteAuxiliaryStreamDecoded(IHRTCConnection* conn, const char* userId, int width, int height)
```
【**功能说明**】
远端用户辅流第一帧解码成功，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
- width：视频宽。
- height：视频高。
 
#### onAudioStatsNotify
```
virtual void onAudioStatsNotify(IHRTCConnection* conn, HRTCLocalAudioStats *localStats, unsigned int localStatsCount, HRTCRemoteAudioStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
音频流详情，2s触发一次回调。
【**回调参数**】
- conn：连接对象。
- localStats：本地音频发流统计，具体请参见[HRTCLocalAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section17479113842318)。
- localStatsCount：localStats数组长度。
- remoteStats：远端音频收流详情，具体请参见[HRTCRemoteAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1986482818245)。
- remoteStatsCount：remoteStats数组长度。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 当无本地音频时，localStatsCount为0，localStats为空指针。
- 当无远端音频时，remoteStatsCount为0，remoteStats为空指针。
 
#### onVideoStatsNotify
```
virtual void onVideoStatsNotify(IHRTCConnection* conn, HRTCLocalVideoStats *localStats, unsigned int localStatsCount, HRTCRemoteVideoStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
视频流详情，2s触发一次回调。
【**回调参数** 】
- conn：连接对象。
- localStats：本地视频发流统计，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section10761129182318)。
- localStatsCount：localStats数组长度。
- remoteStats：远端视频收流统计，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section34941520192413)。
- remoteStatsCount：remoteStats数组长度。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 当无本地视频时，localStatsCount为0，localStats为空指针。
- 当无远端视频时，remoteStatsCount为0，remoteStats为空指针。
 
#### onAuxiliaryStreamStatsNotify
```
virtual void onAuxiliaryStreamStatsNotify(IHRTCConnection* conn, HRTCLocalVideoStats *localStats, unsigned int localStatsCount, HRTCRemoteVideoStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
辅流详情，2s触发一次回调。
【**回调参数**】
- conn：连接对象。
- localStats：本地辅流发流详情，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section10761129182318)。
- localStatsCount：本地辅流发流数量。
- remoteStats：远端辅流收流详情，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section34941520192413)。
- remoteStatsCount：远端辅流收流数量。
 
#### onNetworkQualityNotify
```
virtual void onNetworkQualityNotify(IHRTCConnection* conn, HRTCQualityInfo* localQuality, unsigned int localQualityCount, HRTCQualityInfo* remoteQuality, unsigned int remoteQualityCount)
```
【**功能说明**】
房间内客户端基于流级别的网络质量实时上报，默认开启，每2s上报一次，有数据流时才会回调，音频流、视频流分开回调。
【**回调参数**】
- conn：连接对象。
- localQuality：本地上行网络质量，该参数暂时不使用。
- localQualityCount：正在上报的网络质量数量，该参数暂时不使用。
- remoteQualityCount：正在上报的流的数量，集合的大小。
 
#### onError
```
virtual void onError(int error, const char* msg)
```
【**功能说明**】
发生错误，触发此回调。返回[客户端错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)或者[服务端错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0036.html)。
【**回调参数**】
- error：错误码，具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
- msg：错误描述。
 
#### onJoinRoomSuccess
```
virtual void onJoinRoomSuccess(const char* roomId, const char* userId)
```
【**功能说明**】
成功加入房间，触发此回调。
【**回调参数**】
- roomId：新加入的房间ID。
- userId：新加入房间的用户ID。
 
#### onJoinRoomFailure
```
virtual void onJoinRoomFailure(int error, const char* msg)
```
【**功能说明**】
加入房间失败，触发此回调。
【**回调参数**】
- error：错误码，具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
- msg：错误描述。
 
#### onLeaveRoom
```
virtual void onLeaveRoom(HRTCLeaveReason reason, const HRTCStatsInfo &statsInfo)
```
【**功能说明**】
离开房间，触发此回调。
【**回调参数**】
- reason：离开的房间原因，具体请参见[HRTCLeaveReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section207822774414)。
- statsInfo：卡顿统计信息，具体请参见[HRTCStatsInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section451795725415)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
APP调用[leaveRoom](https://support.huaweicloud.com/csdk-rtc/rtc_05_0099.html#rtc_05_0099__zh-cn_topic_0000001113849700_section72039355375)接口时，会返回[HRTC_LEAVE_REASON_USER_LEAVE_ROOM](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section207822774414)，可以通过以下任一方式回退到登录界面。
- APP在调用[leaveRoom](https://support.huaweicloud.com/csdk-rtc/rtc_05_0099.html#rtc_05_0099__zh-cn_topic_0000001113849700_section72039355375)接口时退到登录界面，或者在收到onLeaveRoom回调，且回调消息不等于[HRTC_LEAVE_REASON_USER_LEAVE_ROOM](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section207822774414)时（防止重复操作）退到登录界面。
- APP只在收到onLeaveRoom消息时退到登录界面。
 
#### onRemoteUserOnline
```
virtual void onRemoteUserOnline(const char* roomId, const char* userId, const char* userName)
```
【**功能说明**】
远端joiner用户加入当前房间，触发此回调。该回调提示有远端joiner用户加入了房间，并返回新加入用户的ID。
【**回调参数**】
- roomId：房间ID。
- userId：远端用户ID。
- userName：远端用户昵称。
 
#### onRemoteUserOffline
```
virtual void onRemoteUserOffline(const char* roomId, const char* userId, int reason)
```
【**功能说明**】
远端joiner用户离开当前房间，触发此回调。
本端用户离开当前房间，会回调当前房间所有用户offline。
【**回调参数** 】
- roomId：当前房间的房间ID。
- userId：离开房间的远端用户ID。
- reason：远端用户离线原因，预留参数。
 
#### onRemoteUserNameChangedNotify
```
virtual void onRemoteUserNameChangedNotify(const char* roomId, const char* userId, const char* userName)
```
【**功能说明**】
远端用户昵称变化，触发此回调。
【**回调参数**】
- roomId：房间ID。
- userId：用户ID。
- userName：变更后的昵称。
 
#### onUserNameChangedNotify
```
virtual void onUserNameChangedNotify(const char* oldUserName, const char* newUserName)
```
【**功能说明**】
本端用户昵称变化，触发此回调。
【**回调参数**】
- oldUserName：变更前的昵称。
- newUserName：变更后的昵称。
 
#### onFirstRemoteAuxiliaryStreamDecoded
```
virtual void onFirstRemoteAuxiliaryStreamDecoded(const char* roomId, const char* userId, int width, int height)
```
【**功能说明**】
接收到第一帧远端辅流并解码成功，触发此回调。
【**回调参数**】
- roomId：视频流对应的房间ID。
- userId：视频流对应的用户ID。
- width：视频流宽。
- height：视频流高。
 
#### onFirstRemoteVideoDecoded
```
virtual void onFirstRemoteVideoDecoded(const char* roomId, const char* userId, int width, int height)
```
【**功能说明**】
接收到第一帧远端视频流并解码成功，触发此回调。
【**回调参数**】
- roomId：视频流对应的房间ID。
- userId：视频流对应的用户ID。
- width：视频流宽。
- height：视频流高。
 
#### onConnectionChangedNotify
```
virtual void onConnectionChangedNotify(HRTCConnStateTypes connType, HRTCConnChangeReason reason, const char* description)
```
【**功能说明**】
网络连接状态发生变化，触发此回调。
【**回调参数**】
- connType：网络连接状态。具体请参见[HRTCConnStateTypes](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1143012526423)。
- reason：网络连接状态发生变化原因。具体请参见[HRTCConnChangeReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section17275040104313)。
- description：错误原因描述。
 
#### onDeviceStateChangedNotify
```
virtual void onDeviceStateChangedNotify(const char* deviceId, HRTCDeviceType deviceType, HRTCDeviceState deviceState)
```
【**功能说明**】
设备状态发生变化，触发此回调。
【**回调参数**】
- deviceId：系统设备标识，如系统音频播放设备标识可通过[getPlaybackDevices](https://support.huaweicloud.com/csdk-rtc/rtc_05_0116.html#rtc_05_0116__zh-cn_topic_0277015531_section1159715261797)获取。
- deviceType：系统设备类型，具体请参见[HRTCDeviceType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__zh-cn_topic_0277015533_section1828214264182)。
- deviceState：系统设备状态，具体请参见[HRTCDeviceState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__zh-cn_topic_0277015533_section1728432617187)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
通话前插拔设备会上报变化。
#### onDeviceVolumeChangedNotify
```
virtual void onDeviceVolumeChangedNotify(HRTCDeviceType deviceType, unsigned int volume, unsigned int muted)
```
【**功能说明**】
音频设备音量发生变化，触发此回调。
【**回调参数**】
- deviceType：系统设备类型，具体请参见[HRTCDeviceType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__zh-cn_topic_0277015533_section1828214264182)。
- volume：音量。
- muted：true表示设备静音，false表示设备未静音。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
通话前调整音频设备音量和静音会上报变化。
#### onLogUploadResult
```
virtual void onLogUploadResult(int result)
```
【**功能说明**】
日志上传结果回调。
【**回调参数**】
result：日志上传结果。
- 0：上传成功
- \>0：上传失败
 
#### onLogUploadProgress
```
virtual void onLogUploadProgress(int progress)
```
【**功能说明**】
日志上传进度回调。
【**回调参数**】
progress：日志上传进度。取值范围为\[0,100\]。
#### onUserRoleChangedNotify
```
virtual void onUserRoleChangedNotify(const char* roomId, HRTCRoleType oldRole, HRTCRoleType newRole)
```
【**功能说明**】
用户角色切换成功，触发此回调。
【**回调参数**】
- roomId：发生角色切换的房间号。
- oldRole：切换前的角色。具体请参见[HRTCRoleType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1130451518425)。
- newRole：切换成功后的角色。具体请参见[HRTCRoleType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1130451518425)。
 
 #### onScreenShareStarted
```
virtual void onScreenShareStarted()
```
【**功能说明**】
屏幕流共享开启，触发此回调。
#### onScreenShareStopped(int reason)
```
virtual void onScreenShareStopped(int reason)
```
【**功能说明**】
屏幕流共享状态改变，触发此回调。
【**回调参数**】
reason：屏幕共享改变原因。
#### onUserAuxiliaryStreamAvailable
```
virtual void onUserAuxiliaryStreamAvailable(const char* roomId, const char* userId, bool available)
```
【**功能说明**】
远端开启，停止辅流后，触发此回调。
【**回调参数**】
- roomId：房间ID。
- userId：远端用户ID。
- available：true表示远端开启推辅流，false表示远端停止辅流。
 
#### onVideoStatsNotify
```
virtual void onVideoStatsNotify(HRTCLocalVideoStats *localStats, unsigned int localStatsCount, HRTCRemoteVideoStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
视频流详情，2s触发一次回调。
【**回调参数** 】
- localStats：本地视频发流统计，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section10761129182318)。
- localStatsCount：localStats数组长度。
- remoteStats：远端视频收流统计，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section34941520192413)。
- remoteStatsCount：remoteStats数组长度。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 当无本地视频时，localStatsCount为0，localStats为空指针，需要先判断不为空再使用，否则可能引发空指针错误。
- 当无远端视频时，remoteStatsCount为0，remoteStats为空指针，需要先判断不为空再使用，否则可能引发空指针错误。
 
#### onAudioStatsNotify
```
virtual void onAudioStatsNotify(HRTCLocalAudioStats *localStats, unsigned int localStatsCount, HRTCRemoteAudioStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
音频流详情，2s触发一次回调。
【**回调参数**】
- localStats：本地音频发流统计，具体请参见[HRTCLocalAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section17479113842318)。
- localStatsCount：localStats数组长度。
- remoteStats：远端音频收流统计，具体请参见[HRTCRemoteAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1986482818245)。
- remoteStatsCount：remoteStats数组长度。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 当无本地音频时，localStatsCount为0，localStats为空指针，需要先判断不为空再使用，否则可能引发空指针错误。
- 当无远端音频时，remoteStatsCount为0，remoteStats为空指针，需要先判断不为空再使用，否则可能引发空指针错误。
 
#### onAuxiliaryStreamStatsNotify
```
virtual void onAuxiliaryStreamStatsNotify(HRTCLocalVideoStats *localStats, unsigned int localStatsCount, HRTCRemoteVideoStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
辅流详情，2s触发一次回调。
【**回调参数**】
- localStats：本地辅流发流统计，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section10761129182318)。
- localStatsCount：localStats数组长度。
- remoteStats：远端辅流收流统计，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section34941520192413)。
- remoteStatsCount：remoteStats数组长度。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 当无本地共享频时，localStatsCount为0，localStats为空指针，需要先判断不为空再使用，否则可能引发空指针错误。
- 当无远端共享频时，remoteStatsCount为0，remoteStats为空指针，需要先判断不为空再使用，否则可能引发空指针错误。
 
#### onAuthorizationExpired
```
virtual void onAuthorizationExpired();
```
【**功能说明**】
鉴权签名过期回调，需要app调用更新签名。
#### onRemoteAudioStateChangedNotify
```
virtual void onRemoteAudioStateChangedNotify(const char* userId, HRTCRemoteAudioStreamState state, HRTCRemoteAudioStreamStateReason reason)
```
【**功能说明**】
远端音频流状态变化回调。
【**回调参数**】
- userId：远端用户ID。
- state：远端音频流状态，具体请参见[HRTCRemoteAudioStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1037761017453)。
- reason：远端音频流状态变化原因，具体请参见[HRTCRemoteAudioStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1272173884515)。
 
#### onRemoteVideoStateChangedNotify
```
virtual void onRemoteVideoStateChangedNotify(const char* userId, HRTCRemoteVideoStreamState state, HRTCRemoteVideoStreamStateReason reason)
```
【**功能说明**】
远端视频流状态变化回调。
【**回调参数**】
- userId：远端用户ID。
- state：远端视频流状态，具体请参见[HRTCRemoteVideoStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section8616181318312)。
- reason：远端视频流状态变化原因，具体请参见[HRTCRemoteVideoStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section163781283461)。
 
#### onRenderAuxiliaryExternalVideoFrame
```
virtual void onRenderAuxiliaryExternalVideoFrame(const char* roomId, HRTCMediaDirection direction, const char* userId, HRTCVideoFrame& videoFrame)
```
【**功能说明**】
辅流自渲染回调。需要调用setAuxiliaryExternalVideoFrameOutput接口开启辅流自渲染，从而触发该回调。
【**回调参数**】
- roomId：房间ID。
- direction：数据源，本地数据，远端数据，具体请参见[HRTCMediaDirection](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section19900291817)。
- userId：用户ID。
- videoFrame：辅流详情，具体请参见[HRTCVideoFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section350055315612)。
 
#### onRejoinRoomSuccess
```
virtual void onRejoinRoomSuccess(const char* roomId, const char* userId)
```
【**功能说明**】
重新加入房间回调。例如网络异常后重连成功加入房间触发。
【**回调参数**】
- roomId：房间ID。
- userId：用户ID。
 
#### onNetworkTestQuality
```
virtual void onNetworkTestQuality(HRTCNetworkQualityLevel level)
```
【**功能说明**】
加房间前网络探测回调。
【**回调参数**】
level：网络质量，具体请参见[HRTCNetworkQualityLevel](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section72827794713)。
#### onNetworkTestResult
```
virtual void onNetworkTestResult(HRTCNetworkTestResult& networkTestResult)
```
【**功能说明**】
加房间前网络探测结果回调。
【**回调参数**】
networkTestResult：主要包括测试成功与否、上行和下行的网络带宽、丢包、延时和抖动，具体请参见[HRTCNetworkTestResult](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1134139471)。
#### onUserVolumeStatsNotify
```
virtual void onUserVolumeStatsNotify(const HRTCVolumeInfo* userVolumes, unsigned int userVolumesCount, unsigned int totalVolume)
```
【**功能说明**】
用户音量状态回调。通过[enableUserVolumeNotify](https://support.huaweicloud.com/csdk-rtc/rtc_05_0020.html#rtc_05_0020__section16217114063820)开启并设置回调周期，定时上报。
【**回调参数**】
- userVolumes：用户信息，具体请参见[HRTCVolumeInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section8783112315148)。
- userVolumesCount：上报的用户人数，包含本地用户。
- totalVolume：总音量。
 
#### onTopActiveSpeaker
```
virtual void onTopActiveSpeaker(const char* userId, bool noStream)
```
【**功能说明**】
声控画面的用户ID变化时，触发此回调。该回调主要用于0号会场场景。
【**回调参数**】
userId：返回当前声控画面的用户ID。
noStream：该用户是否有视频流。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
0号会场模式下，SDK会持续监测（根据一定时间内用户音量大小）当前最活跃的用户，如果最活跃用户发生变化，则触发此回调并上报当前最活跃的用户userId。
#### onLocalAudioStateChangedNotify
```
virtual void onLocalAudioStateChangedNotify(HRTCLocalAudioStreamState state, HRTCLocalAudioStreamStateReason reason)
```
【**功能说明**】
本地音频状态改变，触发此回调。
【**回调参数**】
- state：本地音频状态，具体请参见[HRTCLocalAudioStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section27791115142615)。
- reason：本地音频状态改变的原因，具体请参见[HRTCLocalAudioStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section187787153264)。
 
#### onLocalVideoStateChangedNotify
```
virtual void onLocalVideoStateChangedNotify(HRTCLocalVideoStreamState state, HRTCLocalVideoStreamStateReason reason)
```
【**功能说明**】
本地视频状态改变，触发此回调。
【**回调参数**】
- state：本地视频状态，具体请参见[HRTCLocalVideoStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section17801015122619)。
- reason：本地视频状态改变原因，具体请参见[HRTCLocalVideoStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section278181542617)。
 
#### onMediaConnectStateChangedNotify
```
virtual void onMediaConnectStateChangedNotify(HRTCMediaConnStateTypes state, HRTCMediaConnChangeReason reason, const char* description)
```
【**功能说明**】
媒体服务器连接状态变更通知。
【**回调参数**】
- state：与媒体服务器连接状态，具体请参见[HRTCMediaConnStateTypes](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section171141341155620)。
- reason：连接状态变化的原因，具体请参见[HRTCMediaConnChangeReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section545124317564)。
- description：连接状态变化原因描述。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
加入房间过后，收到媒体服务的数据包时，返回Connected消息，超过6s没有收到包，则返回Failed消息。
#### onStartAllRemoteViewResult
```
virtual void onStartAllRemoteViewResult(int errCode, const char* errMsg, unsigned int counts, const HRTCSetupRemoteViewResult* results)
```
【**功能说明**】
批量选看结果回调。
【**回调参数**】
- errCode：错误码。
- errMsg：错误信息。
- counts：results数组大小。
- results：批量选看结果，具体请参见[HRTCSetupRemoteViewResult](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section895105225712)。
 
#### onStatsNotify
```
virtual void onStatsNotify(HRTCOnStats *rtcStats)
```
【**功能说明**】
当前会话统计回调。
【**回调参数**】
rtcStats：当前会话统计，具体请参见[HRTCOnStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section14832161915511)。
#### onLocalVideoStatsNotify
```
virtual void onLocalVideoStatsNotify(const HRTCLocalVideoStats *localStats, unsigned int localStatsCount)
```
【**功能说明**】
本地视频流详情，2s触发一次回调。
【**回调参数**】
- localStats：本地视频收流统计，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section10761129182318)。
- localStatsCount：localStats数组长度。
 
#### onRemoteVideoStatsNotify
```
virtual void onRemoteVideoStatsNotify(const HRTCRemoteVideoStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
远端视频流详情，2s触发一次回调。
【**回调参数**】
- remoteStats：远端视频收流统计，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section34941520192413)。
- remoteStatsCount：remoteStats数组长度。
 
#### onLocalAudioStatsNotify
```
virtual void onLocalAudioStatsNotify(const HRTCLocalAudioStats *localStats, unsigned int localStatsCount)
```
【**功能说明**】
本地音频流详情，2s触发一次回调。
【**回调参数**】
- localStats：本地音频收流统计，具体请参见[HRTCLocalAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1483619515499)。
- localStatsCount：localStats数组长度。
#### onRemoteAudioStatsNotify
```
virtual void onRemoteAudioStatsNotify(const HRTCRemoteAudioStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
远端音频流详情，2s触发一次回调。
【**回调参数**】
- remoteStats：远端音频收流统计，具体请参见[HRTCRemoteAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section1986482818245)。
- remoteStatsCount：remoteStats数组长度。
#### onVideoResolutionChangedNotify
```
virtual void onVideoResolutionChangedNotify(const char* userId, int width, int height)
```
【**功能说明**】
远端视频分辨率大小改变，触发此回调。
【**回调参数**】
- userId：用户ID。
- width：视频分辨率改变后的宽。
- height：视频分辨率改变后的高。
#### onAudioClipFinished
```
virtual void onAudioClipFinished(int soundId)
```
【**功能说明**】
音效文件播放结束，触发此回调。
【**回调参数**】
soundId：音效ID，取值\>=0。
#### onAudioFileFinished
```
virtual void onAudioFileFinished()
```
【**功能说明**】
音频文件播放结束，触发此回调。
【**回调参数**】
无
 #### onAudioMixStateChangedNotify
```
virtual void onAudioMixStateChangedNotify(HRTCAudioFileState state, HRTCAudioFileReason reason, unsigned long long value)
```
【**功能说明**】
音频文件播放状态改变，触发此回调。
【**回调参数**】
- state：音频播放状态，具体请参见[HRTCAudioFileState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section49629118111)。
- reason：音频播放状态改变原因，具体请参见[HRTCAudioFileReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section18807173319112)。
- value：state为HWRtcAudioFileOpenCompleted表示音频文件的时长，单位为ms；state为HWRtcAudioFilePositionUpdate表示当前播放的位置，单位为ms。其他情况下，value值无意义。
#### onSeiSendMsgSuccess
```
void onSeiSendMsgSuccess(const char* message);
```
【**功能说明**】
音频SEI信息发送成功回调。
**回调参数**
message：发送SEI信息的内容。
#### onSeiRecvMsg
```
void onSeiRecvMsg(const char* userId, const char* message);
```
【**功能说明**】
接收音频SEI信息回调。
**回调参数**
- userId：用户ID。
- message：接收SEI信息的内容。
 
 #### onStartPublishStream
```
void onStartPublishStream(int code, const char* taskId);
```
【**功能说明**】
开始旁路（RTMP）推流回调。
**回调参数**
- code：错误码，成功为0，失败请参考[错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
- taskId：任务Id。
 
 #### onUpdateTransCoding
```
void onUpdateTransCoding(int code, const char* taskId);
```
【**功能说明**】
更新旁路（RTMP）推流消息。
**回调参数**
- code：错误码，成功为0，失败请参考[错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
- taskId：任务Id。
 
 #### onStopPublishStream
```
void onStopPublishStream(int code, const char* taskId);
```
【**功能说明**】
停止旁路（RTMP）推流消息。
**回调参数**
- code：错误码，成功为0，失败请参考[错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
- taskId：任务Id。
 
 #### onStreamPublishStateChange
```
void onStreamPublishStateChange(int code, const char* taskId, const HRTCUrlStatusList * urlStatu);
```
【**功能说明**】
RTMP推流状态回调。
**回调参数**
- code：错误码，成功为0，失败请参考[错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
- taskId：任务Id。
- urlStatu：推流的url状态，具体请参见[HRTCUrlStatusList](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section159071888515)。
 
 #### onLocalAudioMutedStatusDetected
```
void onLocalAudioMutedStatusDetected();
```
【**功能说明**】
本端禁音检测回调。通过enableUserVolumeNotify开启并设置回调周期，禁音检测以6次音量回调为一个上报周期，[enableUserVolumeNotify](https://support.huaweicloud.com/csdk-rtc/rtc_05_0020.html#rtc_05_0020__section16217114063820)的参数建议设置成200（即最快1200ms触发禁音检测回调一次）。
【**回调参数**】
无
 #### onTopActiveSpeaker
```
public void onTopActiveSpeaker(String userId, boolean noStream);
```
【**功能说明**】
上报当前最活跃的用户userId。该回调主要用于0号会场场景（额外订阅uid为0的用户音频）。
【**回调参数**】
userId：返回当前远端音量最活跃的用户ID。
noStream：该用户是否有视频流。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
0号会场模式下，SDK会持续监测（根据一定时间内用户音量大小）当前最活跃的用户，如果最活跃用户发生变化，则触发此回调并上报当前最活跃的用户userId。
 #### onRemoteMicrophoneStateChanged
```
void onRemoteMicrophoneStateChanged(String userId, HRTCRemoteMicState state);
```
【**功能说明**】
远端麦克风设备状态变更回调。
【**回调参数**】
- userId：用户id。
- state：麦克风设备状态，具体请参见[HRTCRemoteMicState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section13309133309)。
 
 #### onUserNetworkQualityNotify
```
void onUserNetworkQualityNotify(String roomId, String userId, HRTCNetworkQualityLevel txQuality, HRTCNetworkQualityLevel rxQuality);
```
【**功能说明**】
支持用户上报各自与近端SFU间的上下行网络质量，基于用户级，使本地用户能获取同房间内远端用户与其近端SFU间的网络质量。CMD广播时为房间级，将广播给订阅了此主播流的用户或者此主播被选为TOPN用户且观众订阅了该TOPN用户。
【**回调参数**】
- roomId：用户所在房间号。
- userId：上报的用户id，0为本地，非0为远端。
- txQuality：该用户的上行网络质量，具体请参见[HRTCNetworkQualityLevel](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section72827794713)。
- rxQuality：该用户的下行网络质量，具体请参见[HRTCNetworkQualityLevel](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section72827794713)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 此接口不支持跨房场景、WebRTC场景。
- 不支持RTSA。
 
 #### onMultiRoomMediaRelayStateChanged
```
void onMultiRoomMediaRelayStateChanged(const char *roomId, HRTCMultiRoomMediaRelayState state, HRTCMultiRoomMediaRelayStateCode code);
```
【**功能说明**】
跨房状态回调。
**【回调参数**】
- roomId：跨房房间号。
- state：状态类型，具体请参见[HRTCMultiRoomMediaRelayState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section817464593514)。
- code：状态的具体原因，具体请参见[HRTCMultiRoomMediaRelayStateCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section12745550193512)。
 
