# io.agora.recording.RecordingEventHandler接口 参考 (/zh-CN/api-reference/local-server-recording/java/legacy/interfaceio-1-1agora-1-1recording-1-1-recording-event-handler)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

## 成员函数说明 [#成员函数说明]

<a id="a197e834c8147b89415c0d34ad2630615"></a>

### onLeaveChannel() [#onleavechannel]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onLeaveChannel(int *reason*)

</ApiSignature>

该回调方法提示离开频道成功。

<ParameterList title="参数">
<Parameter name="reason">

录制端离开频道的原因，详见 [LEAVE_PATH_CODE](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-l-e-a-v-e-p-a-t-h-c-o-d-e)。

</Parameter>
</ParameterList>

<a id="ab6562c4957b4db231fb538aa2f43b9d6"></a>

### onError() [#onerror]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onError(int *error*, int *stat_code*)

</ApiSignature>

该回调方法表示 SDK 运行时出现了（网络或媒体相关的）错误。通常情况下，SDK 上报的错误意味着 SDK 无法自动恢复，需要 App 干预或提示用户。

<ParameterList title="参数">
<Parameter name="error">

[错误代码](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-e-r-r-o-r-c-o-d-e-t-y-p-e)。

</Parameter>
<Parameter name="stat_code">

[状态代码](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-s-t-a-t-c-o-d-e-t-y-p-e)。

</Parameter>
</ParameterList>

<a id="a7a563e37bcdffdc0a611e89da218836f"></a>

### onWarning() [#onwarning]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onWarning(int *warn*)

</ApiSignature>

该回调方法表示 SDK 运行时出现了（网络或媒体相关的）警告。通常情况下，SDK 上报的警告信息应用程序可以忽略，SDK 会自动恢复。

<ParameterList title="参数">
<Parameter name="warn">

[警告代码](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-w-a-r-n-c-o-d-e-t-y-p-e)。

</Parameter>
</ParameterList>

<a id="a493b31ae39de3060a852f5e93b260eb4"></a>

### onJoinChannelSuccess() [#onjoinchannelsuccess]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onJoinChannelSuccess(String *channelId*, long *uid*)

</ApiSignature>

该回调方法表示录制端成功加入了指定频道。

<ParameterList title="参数">
<Parameter name="channelId">

和调用 [createChannel](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1-recording-s-d-k#ae55bfee56ef78d93993e0d04d7b1402b) 时设置的频道名一致.

</Parameter>
<Parameter name="uid">

用户的 UID。

</Parameter>
</ParameterList>

<a id="ab37521764aa117678792b2059cd9b572"></a>

### onRemoteVideoStreamStateChanged() [#onremotevideostreamstatechanged]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onRemoteVideoStreamStateChanged(long *uid*, [REMOTE_STREAM_STATE](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-r-e-m-o-t-e-s-t-r-e-a-m-s-t-a-t-e) *state*, [REMOTE_STREAM_STATE_CHANGED_REASON](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-r-e-m-o-t-e-s-t-r-e-a-m-s-t-a-t-e-c-h-a-n-g-e-d-r-e-a-s-o-n) *reason*)

</ApiSignature>

远端用户视频流状态改变回调。

该回调在远端用户视频流状态发生变化时触发，并报告该用户当前的视频流状态和引起变化的原因。

<ParameterList title="参数">
<Parameter name="uid">

远端用户的 UID。

</Parameter>
<Parameter name="state">

该用户当前的视频流状态，详见 [REMOTE_STREAM_STATE](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-r-e-m-o-t-e-s-t-r-e-a-m-s-t-a-t-e)。

</Parameter>
<Parameter name="reason">

引起远端视频流状态变化的原因，详见 [REMOTE_STREAM_STATE_CHANGED_REASON](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-r-e-m-o-t-e-s-t-r-e-a-m-s-t-a-t-e-c-h-a-n-g-e-d-r-e-a-s-o-n)。

</Parameter>
</ParameterList>

<a id="ad0a0dde5cad8c9bad7d5896cf242c188"></a>

### onRemoteAudioStreamStateChanged() [#onremoteaudiostreamstatechanged]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onRemoteAudioStreamStateChanged(long *uid*, [REMOTE_STREAM_STATE](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-r-e-m-o-t-e-s-t-r-e-a-m-s-t-a-t-e) *state*, [REMOTE_STREAM_STATE_CHANGED_REASON](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-r-e-m-o-t-e-s-t-r-e-a-m-s-t-a-t-e-c-h-a-n-g-e-d-r-e-a-s-o-n) *reason*)

</ApiSignature>

远端用户音频流状态改变回调。

该回调在远端用户音频流状态发生变化时触发，并报告该用户当前的音频流状态和引起变化的原因。

<ParameterList title="参数">
<Parameter name="uid">

远端用户的 UID。

</Parameter>
<Parameter name="state">

该用户当前的音频流状态，详见 [REMOTE_STREAM_STATE](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-r-e-m-o-t-e-s-t-r-e-a-m-s-t-a-t-e)。

</Parameter>
<Parameter name="reason">

引起远端音频流状态变化的原因，详见 [REMOTE_STREAM_STATE_CHANGED_REASON](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-r-e-m-o-t-e-s-t-r-e-a-m-s-t-a-t-e-c-h-a-n-g-e-d-r-e-a-s-o-n)。

</Parameter>
</ParameterList>

<a id="a6df6225e70e38920ae6072cedcdc60b6"></a>

### onUserOffline() [#onuseroffline]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onUserOffline(long *uid*, int *reason*)

</ApiSignature>

该回调方法提示有用户离开了频道（或掉线）。

SDK 判断用户离开频道（或掉线）的依据是：在一定时间内（15 秒）没有收到对方的任何数据包。 在网络较差的情况下，可能会有误报。建议可靠的掉线检测应该由信令来做。

<ParameterList title="参数">
<Parameter name="uid">

用户的 UID。

</Parameter>
<Parameter name="reason">

用户离开当前频道或掉线的原因，详见 [USER_OFFLINE_REASON_TYPE](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-u-s-e-r-o-f-f-l-i-n-e-r-e-a-s-o-n-t-y-p-e)。

</Parameter>
</ParameterList>

<a id="a873e9e611135f0db276d67a3d3f8b8c6"></a>

### onUserJoined() [#onuserjoined]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onUserJoined(long *uid*, String *recordingDir*)

</ApiSignature>

该回调方法提示有用户加入了频道，并返回新加入用户的 UID。

如果在录制端加入之前，已经有用户在频道中，SDK 也会上报这些已在频道中的用户 UID。频道内有多少用户，该回调就会调用几次。

<ParameterList title="参数">
<Parameter name="uid">

用户的 UID。

</Parameter>
<Parameter name="recordingDir">

录制的媒体文件和 log 的存放路径。

</Parameter>
</ParameterList>

<a id="af8e43e2c55a53bb09b0137e800132c0f"></a>

### onActiveSpeaker() [#onactivespeaker]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onActiveSpeaker(long *uid*)

</ApiSignature>

监测到活跃用户回调。

[RecordingConfig](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-recording-config) 中的 [audioIndicationInterval](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-recording-config#aa27f2777c8abf5d5a3f085054786cf21) 大于 0 时（建议设置时间间隔大于 200 ms），如果 SDK 监测到频道内有新的活跃用户说话时，会触发该回调，返回当前时间段声音最大的用户的 UID。

<ParameterList title="参数">
<Parameter name="uid">

当前时间段声音最大的用户的 UID。

</Parameter>
</ParameterList>

<a id="a9a99eb2936c493fc7bb5626d5da27fdc"></a>

### audioFrameReceived() [#audioframereceived]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.audioFrameReceived(long *uid*, [AudioFrame](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-common-1-1-audio-frame) *frame*)

</ApiSignature>

当收到原始音频数据时，会触发该回调。

当你将 [RecordingConfig](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-recording-config) 中的 [decodeAudio](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-recording-config#af956c9163fd20067386ecc307652e8e9) 设置为 `1`、`2` 或 `3` 时，可通过该回调接收原始音频数据。

<ParameterList title="参数">
<Parameter name="uid">

用户的 UID。

</Parameter>
<Parameter name="frame">

返回的原始音频数据，格式为 PCM 或 AAC。详见 [AudioFrame](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-common-1-1-audio-frame)。

</Parameter>
</ParameterList>

<a id="ae2e1e70d70f12bddf1ff01e255c0d800"></a>

### videoFrameReceived() [#videoframereceived]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.videoFrameReceived(long *uid*, int *type*, [VideoFrame](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-common-1-1-video-frame) *frame*, int *rotation*)

</ApiSignature>

当收到视频数据时，会触发该回调。

当你将 [RecordingConfig](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-recording-config) 中的 [decodeVideo](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-recording-config#ac63aa97b424a2c23556bec88b48fc167) 设置为 `1`、`2` 或 `3` 时，可通过该回调接收原始视频数据。

当你将 [RecordingConfig](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-recording-config) 中的 [decodeVideo](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-recording-config#ac63aa97b424a2c23556bec88b48fc167) 设置为 `4` 或 `5` 时，可通过该回调接收 JPG 文件格式的视频数据。

该回调可用于实现高级功能，如鉴黄。这些功能可以通过采集并分析 I 帧实现。

<ParameterList title="参数">
<Parameter name="uid">

`createChannel` 方法中指定的远端用户的 UID。 如果先前未分配 UID，则 Agora 服务器会自动分配 UID。

</Parameter>
<Parameter name="type">

返回的视频数据的格式：

- 0: YUV
- 1: H.264
- 2: JPG
- 3: H.265
- 4: JPG 文件

</Parameter>
<Parameter name="frame">

返回的视频数据。详见 [VideoFrame](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-common-1-1-video-frame)。

</Parameter>
<Parameter name="rotation">

旋转角度：0, 90, 180, or 270.

</Parameter>
</ParameterList>

<a id="ad02e649b29b195bfb52a5862b6d460f2"></a>

### recordingPathCallBack() [#recordingpathcallback]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.recordingPathCallBack(String *path*)

</ApiSignature>

该回调方法获取录制文件的存放路径。

<ParameterList title="参数">
<Parameter name="path">

录制文件的存放路径。

</Parameter>
</ParameterList>

<a id="a5c27a357d938c5d72482a80612574b1b"></a>

### onAudioVolumeIndication() [#onaudiovolumeindication]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onAudioVolumeIndication([AudioVolumeInfo](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-common-1-1-audio-volume-info)[] *infos*)

</ApiSignature>

该回调提示频道内谁正在说话以及说话者音量。

[RecordingConfig](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-recording-config) 中的 [audioIndicationInterval](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-recording-config#aa27f2777c8abf5d5a3f085054786cf21) 大于 0 时（建议设置时间间隔大于 200 ms），该回调会返回在时间间隔内所有说话者的 UID 和音量。

<ParameterList title="参数">
<Parameter name="infos">

每个说话者的用户 ID 和音量信息的数组，详见 [AudioVolumeInfo](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-common-1-1-audio-volume-info)。

</Parameter>
</ParameterList>

<a id="a8e52cde6096aa5dcfe527aa9eb3f8ced"></a>

### onFirstRemoteVideoDecoded() [#onfirstremotevideodecoded]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onFirstRemoteVideoDecoded(long *uid*, int *width*, int *height*, int *elapsed*)

</ApiSignature>

该回调提示本地已接收到首帧远端视频并完成解码。

本地收到首帧远端视频流并解码成功时，触发此调用。

<ParameterList title="参数">
<Parameter name="uid">

用户 ID，指定是哪个用户的视频流。

</Parameter>
<Parameter name="width">

视频流宽（像素）。

</Parameter>
<Parameter name="height">

视频流高（像素）。

</Parameter>
<Parameter name="elapsed">

从本地用户调用 [createChannel](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1-recording-s-d-k#ae55bfee56ef78d93993e0d04d7b1402b) 到该回调触发的延迟（毫秒）。

</Parameter>
</ParameterList>

<a id="a9fc38c0068b5d10abc9acadea36c6f7b"></a>

### onFirstRemoteAudioFrame() [#onfirstremoteaudioframe]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onFirstRemoteAudioFrame(long *uid*, int *elapsed*)

</ApiSignature>

该回调提示本地已接收到首帧远端音频流。

<ParameterList title="参数">
<Parameter name="uid">

发送音频帧的远端用户的 ID。

</Parameter>
<Parameter name="elapsed">

从本地用户调用 [createChannel](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1-recording-s-d-k#ae55bfee56ef78d93993e0d04d7b1402b) 到该回调触发的延迟（毫秒）。

</Parameter>
</ParameterList>

<a id="a82809f42c9a3acafe93471be82a70d35"></a>

### onReceivingStreamStatusChanged() [#onreceivingstreamstatuschanged]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onReceivingStreamStatusChanged(boolean *receivingAudio*, boolean *receivingVideo*)

</ApiSignature>

该回调提示接收音频流或视频流的状态发生改变。

<ParameterList title="参数">
<Parameter name="receivingAudio">

录制端是否在接收音频流。

</Parameter>
<Parameter name="receivingVideo">

录制端是否在接收视频流。

</Parameter>
</ParameterList>

<a id="a7ce0f7b40d2a6dded70ef323751910ca"></a>

### onConnectionLost() [#onconnectionlost]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onConnectionLost()

</ApiSignature>

网络连接丢失回调。

SDK 在调用 [createChannel](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1-recording-s-d-k#ae55bfee56ef78d93993e0d04d7b1402b) 后无论是否加入成功，只要 10 秒和服务器无法连接就会触发该回调。

[onConnectionInterrupted](/zh-CN/api-reference/local-server-recording/java/legacy/interfaceio-1-1agora-1-1recording-1-1-recording-event-handler#a31d0cfee3f57d8851457276b70ae5b63) 与 [onConnectionLost](/zh-CN/api-reference/local-server-recording/java/legacy/interfaceio-1-1agora-1-1recording-1-1-recording-event-handler#a7ce0f7b40d2a6dded70ef323751910ca) 的区别是：

- [onConnectionInterrupted](/zh-CN/api-reference/local-server-recording/java/legacy/interfaceio-1-1agora-1-1recording-1-1-recording-event-handler#a31d0cfee3f57d8851457276b70ae5b63) 回调一定是在加入频道成功后，且 SDK 失去和服务器的连接超过 4 秒时触发。
- [onConnectionLost](/zh-CN/api-reference/local-server-recording/java/legacy/interfaceio-1-1agora-1-1recording-1-1-recording-event-handler#a7ce0f7b40d2a6dded70ef323751910ca) 回调是无论之前加入频道是否成功，只要 10 秒内和服务器无法建立连接都会触发。

无论是哪种回调，除非应用程序主动调用 [leaveChannel](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1-recording-s-d-k#a498f6797e2d90999110e04af9c5ea5e1)，不然 SDK 会一直自动重连。

<a id="a31d0cfee3f57d8851457276b70ae5b63"></a>

### onConnectionInterrupted() [#onconnectioninterrupted]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onConnectionInterrupted()

</ApiSignature>

网络连接中断回调。

SDK 在和服务器建立连接后，失去网络连接超过 4 秒，就会触发该回调。在触发事件后，SDK 会主动重连服务器，所以该事件可以用于 UI 提示。

- [onConnectionInterrupted](/zh-CN/api-reference/local-server-recording/java/legacy/interfaceio-1-1agora-1-1recording-1-1-recording-event-handler#a31d0cfee3f57d8851457276b70ae5b63) 回调一定是在加入频道成功后，且 SDK 失去和服务器的连接超过 4 秒时触发。
- [onConnectionLost](/zh-CN/api-reference/local-server-recording/java/legacy/interfaceio-1-1agora-1-1recording-1-1-recording-event-handler#a7ce0f7b40d2a6dded70ef323751910ca) 回调是无论之前加入频道是否成功，只要 10 秒内和服务器无法建立连接都会触发。

无论是哪种回调，除非应用程序主动调用 [leaveChannel](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1-recording-s-d-k#a498f6797e2d90999110e04af9c5ea5e1)，不然 SDK 会一直自动重连。

<a id="ad1e4e6b15ebb5a4fcd4ad2044fd2123d"></a>

### onRejoinChannelSuccess() [#onrejoinchannelsuccess]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onRejoinChannelSuccess(String *channelId*, long *uid*)

</ApiSignature>

重新加入频道回调。

有时由于网络原因，录制客户端可能会和服务器失去连接，SDK 会进行自动重连，自动重连成功后触发此回调方法。

<ParameterList title="参数">
<Parameter name="channelId">

频道名。

</Parameter>
<Parameter name="uid">

录制端的 UID。

</Parameter>
</ParameterList>

<a id="ab673b3a08e3134631af1c3e7209000e3"></a>

### onConnectionStateChanged() [#onconnectionstatechanged]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onConnectionStateChanged([CONNECTION_STATE_TYPE](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-c-o-n-n-e-c-t-i-o-n-s-t-a-t-e-t-y-p-e) *state*, [CONNECTION_CHANGED_REASON_TYPE](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-c-o-n-n-e-c-t-i-o-n-c-h-a-n-g-e-d-r-e-a-s-o-n-t-y-p-e) *reason*)

</ApiSignature>

网络连接状态已改变回调。

该回调在网络连接状态发生改变的时候触发，并告知用户当前的网络连接状态和网络状态改变的原因。

<ParameterList title="参数">
<Parameter name="state">

当前的网络连接状态，详见 [CONNECTION_STATE_TYPE](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-c-o-n-n-e-c-t-i-o-n-s-t-a-t-e-t-y-p-e)。

</Parameter>
<Parameter name="reason">

网络连接状态发生改变的原因，详见 [CONNECTION_CHANGED_REASON_TYPE](/zh-CN/api-reference/local-server-recording/java/legacy/enumio-1-1agora-1-1recording-1-1common-1-1-common-1-1-c-o-n-n-e-c-t-i-o-n-c-h-a-n-g-e-d-r-e-a-s-o-n-t-y-p-e)

</Parameter>
</ParameterList>

<a id="a08e74df3eb8e50d6eea1dc184bd89891"></a>

### onRemoteVideoStats() [#onremotevideostats]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onRemoteVideoStats(long *uid*, [RemoteVideoStats](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-common-1-1-remote-video-stats) *stats*)

</ApiSignature>

远端视频流统计信息回调。

该回调报告远端用户端到端的视频流统计信息，针对每个发送视频流的远端用户（通信模式）/主播（直播模式）每 2 秒触发一次。如果远端有多个用户/主播发送视频流，该回调每 2 秒会被触发多次。

<ParameterList title="参数">
<Parameter name="uid">

用户 ID，指定是哪个用户的视频流。

</Parameter>
<Parameter name="stats">

远端视频统计数据。详见 [RemoteVideoStats](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-common-1-1-remote-video-stats)。

</Parameter>
</ParameterList>

<a id="a23b6982a342835a273731663db6fb6b7"></a>

### onRemoteAudioStats() [#onremoteaudiostats]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onRemoteAudioStats(long *uid*, [RemoteAudioStats](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-common-1-1-remote-audio-stats) *stats*)

</ApiSignature>

远端音频流统计信息回调。

该回调描述远端用户端到端的音频流统计信息，针对每个发送音频流的远端用户（通信模式）/主播（直播模式）每 2 秒触发一次。如果远端有多个用户/主播发送音频流，该回调每 2 秒会被触发多次。

<ParameterList title="参数">
<Parameter name="uid">

用户 ID，指定是哪个用户的音频流。

</Parameter>
<Parameter name="stats">

远端音频统计数据。详见 [RemoteAudioStats](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-common-1-1-remote-audio-stats)。

</Parameter>
</ParameterList>

<a id="a85d77169268158aa440da2bbf7ed9660"></a>

### onRecordingStats() [#onrecordingstats]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onRecordingStats([RecordingStats](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-common-1-1-recording-stats) *stats*)

</ApiSignature>

录制统计信息回调。

录制 SDK 定期向录制端报告当前录制的统计信息，每两秒触发一次。

<ParameterList title="参数">
<Parameter name="stats">

详见 [RecordingStats](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1common-1-1-common-1-1-recording-stats)。

</Parameter>
</ParameterList>

<a id="a508670ebca9c30b673a962a23137a6a6"></a>

### onLocalUserRegistered() [#onlocaluserregistered]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onLocalUserRegistered(long *uid*, String *userAccount*)

</ApiSignature>

该回调表示本地用户已成功注册 User Account。

录制端调用 [createChannelWithUserAccount](/zh-CN/api-reference/local-server-recording/java/legacy/classio-1-1agora-1-1recording-1-1-recording-s-d-k#a38dc626a437d251be0d47a546c4cd29f) 方法成功注册 User Account 后，SDK 会触发该回调，并报告录制端的 UID 和 User Account。

<ParameterList title="参数">
<Parameter name="uid">

录制端的 UID。

</Parameter>
<Parameter name="userAccount">

录制端的 User Account。

</Parameter>
</ParameterList>

<a id="a218c435fe91344c143bf109afb844e3d"></a>

### onUserInfoUpdated() [#onuserinfoupdated]

<ApiSignature>

void io.agora.recording.RecordingEventHandler.onUserInfoUpdated(long *uid*, String *userAccount*)

</ApiSignature>

该回调提示远端用户的信息已更新。

远端用户加入频道后， SDK 会获取到该远端用户的 UID 和 User Account，在本地触发 `onUserInfoUpdated`。

<ParameterList title="参数">
<Parameter name="uid">

远端用户的 UID。

</Parameter>
<Parameter name="userAccount">

录制端的 User Account。

</Parameter>
</ParameterList>
