Public 成员函数 | |
void | onChannelWarning (RtcChannel rtcChannel, int warn) |
void | onChannelError (RtcChannel rtcChannel, int err) |
void | onJoinChannelSuccess (RtcChannel rtcChannel, int uid, int elapsed) |
void | onRejoinChannelSuccess (RtcChannel rtcChannel, int uid, int elapsed) |
void | onLeaveChannel (RtcChannel rtcChannel, RtcStats stats) |
void | onClientRoleChanged (RtcChannel rtcChannel, int oldRole, int newRole) |
void | onUserJoined (RtcChannel rtcChannel, int uid, int elapsed) |
void | onUserOffline (RtcChannel rtcChannel, int uid, int reason) |
void | onConnectionStateChanged (RtcChannel rtcChannel, int state, int reason) |
void | onConnectionLost (RtcChannel rtcChannel) |
void | onTokenPrivilegeWillExpire (RtcChannel rtcChannel, String token) |
void | onRequestToken (RtcChannel rtcChannel) |
void | onRtcStats (RtcChannel rtcChannel, RtcStats stats) |
void | onNetworkQuality (RtcChannel rtcChannel, int uid, int txQuality, int rxQuality) |
void | onRemoteVideoStats (RtcChannel rtcChannel, RemoteVideoStats stats) |
void | onRemoteAudioStats (RtcChannel rtcChannel, RemoteAudioStats stats) |
void | onRemoteAudioStateChanged (RtcChannel rtcChannel, int uid, int state, int reason, int elapsed) |
void | onAudioPublishStateChanged (RtcChannel rtcChannel, int oldState, int newState, int elapseSinceLastState) |
void | onVideoPublishStateChanged (RtcChannel rtcChannel, int oldState, int newState, int elapseSinceLastState) |
void | onFirstRemoteVideoFrame (RtcChannel rtcChannel, int uid, int width, int height, int elapsed) |
void | onAudioSubscribeStateChanged (RtcChannel rtcChannel, int uid, int oldState, int newState, int elapseSinceLastState) |
void | onVideoSubscribeStateChanged (RtcChannel rtcChannel, int uid, int oldState, int newState, int elapseSinceLastState) |
void | onActiveSpeaker (RtcChannel rtcChannel, int uid) |
void | onVideoSizeChanged (RtcChannel rtcChannel, int uid, int width, int height, int rotation) |
void | onRemoteVideoStateChanged (RtcChannel rtcChannel, int uid, int state, int reason, int elapsed) |
void | onUserSuperResolutionEnabled (RtcChannel rtcChannel, int uid, boolean enabled, int reason) |
void | onStreamMessage (RtcChannel rtcChannel, int uid, int streamId, byte[] data) |
void | onStreamMessageError (RtcChannel rtcChannel, int uid, int streamId, int error, int missed, int cached) |
void | onChannelMediaRelayStateChanged (RtcChannel rtcChannel, int state, int code) |
void | onChannelMediaRelayEvent (RtcChannel rtcChannel, int code) |
void | onRtmpStreamingStateChanged (RtcChannel rtcChannel, String url, int state, int errCode) |
void | onTranscodingUpdated (RtcChannel rtcChannel) |
void | onRtmpStreamingEvent (RtcChannel rtcChannel, String url, int errCode) |
void | onLocalPublishFallbackToAudioOnly (RtcChannel rtcChannel, boolean isFallbackOrRecover) |
void | onRemoteSubscribeFallbackToAudioOnly (RtcChannel rtcChannel, int uid, boolean isFallbackOrRecover) |
void | onProxyConnected (RtcChannel rtcChannel, int uid, int proxyType, String localProxyIp, int elapsed) |
void | onClientRoleChangeFailed (RtcChannel rtcChannel, int reason, int currentRole) |
void io.agora.rtc.IRtcChannelEventHandler.onChannelWarning | ( | RtcChannel | rtcChannel, |
int | warn | ||
) |
报告 RtcChannel 对象发生的警告码。
rtcChannel | 当前的 RtcChannel 对象。 |
warn | 警告码:WarnCode 。 |
void io.agora.rtc.IRtcChannelEventHandler.onChannelError | ( | RtcChannel | rtcChannel, |
int | err | ||
) |
报告 RtcChannel 对象发生的错误码。
rtcChannel | 当前的 RtcChannel 对象。 |
err | 错误码:ErrorCode 。 |
void io.agora.rtc.IRtcChannelEventHandler.onJoinChannelSuccess | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | elapsed | ||
) |
加入频道回调。
如果在调用 joinChannel
加入频道时没有指定 uid,服务器会指定一个。
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 用户 ID。 |
elapsed | 从本地用户调用 joinChannel 到触发该回调的时间(毫秒)。 |
void io.agora.rtc.IRtcChannelEventHandler.onRejoinChannelSuccess | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | elapsed | ||
) |
重新加入频道回调。
有时候由于网络原因,客户端可能会和服务器失去连接,SDK 会进行自动重连,自动重连成功后触发此回调方法。
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 用户 ID。 |
elapsed | 从调用 joinChannel 方法到触发该回调的时间间隔(毫秒)。 |
void io.agora.rtc.IRtcChannelEventHandler.onLeaveChannel | ( | RtcChannel | rtcChannel, |
RtcStats | stats | ||
) |
离开频道回调。
当用户通过调用 leaveChannel
方法成功离开频道时,SDK 会触发该回调。
App 可以通过该回调获取相关频道信息,如通话时长等数据。
rtcChannel | 当前的 RtcChannel 对象。 |
stats | 通话相关数据:RtcStats 。 |
void io.agora.rtc.IRtcChannelEventHandler.onClientRoleChanged | ( | RtcChannel | rtcChannel, |
int | oldRole, | ||
int | newRole | ||
) |
直播场景下用户角色切换成功回调。
直播场景下,本地用户加入频道后调用 setClientRole
成功改变用户角色时, 例如主播切换为观众,或观众切换为主播,SDK 会触发该回调,报告切换前和切换后的角色。
rtcChannel | 当前的 RtcChannel 对象。 |
oldRole | 切换前的用户角色:
|
newRole | 切换后的用户角色:
|
void io.agora.rtc.IRtcChannelEventHandler.onUserJoined | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | elapsed | ||
) |
远端用户(通信场景)/主播(直播场景)加入当前频道回调。
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 新加入频道的远端用户/主播 ID |
elapsed | 从本地用户调用 joinChannel 或 setClientRole (BROADCASTER) 到触发该回调的时间。 |
void io.agora.rtc.IRtcChannelEventHandler.onUserOffline | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | reason | ||
) |
远端用户(通信场景)/主播(直播场景)离开当前频道回调。
用户离开频道有两个原因,即正常离开和超时掉线:
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 离开频道或掉线的用户或主播 ID。 |
reason | 离线原因:
|
void io.agora.rtc.IRtcChannelEventHandler.onConnectionStateChanged | ( | RtcChannel | rtcChannel, |
int | state, | ||
int | reason | ||
) |
网络连接状态已改变回调。
该回调在网络连接状态发生改变的时候触发,并告知用户当前的网络连接状态,和引起网络状态改变的原因。
rtcChannel | 当前的 RtcChannel 对象。 |
state | 当前的网络连接状态:
|
reason | The reason causing the change of the connection state:
|
void io.agora.rtc.IRtcChannelEventHandler.onConnectionLost | ( | RtcChannel | rtcChannel | ) |
网络连接中断,且 SDK 无法在 10 秒内连接服务器回调。
SDK 在调用 joinChannel
后,无论是否加入成功,只要 10 秒和服务器无法连接就会触发该回调。
如果 SDK 在断开连接后,20 分钟内还是没能重新加入频道,SDK 会停止尝试重连。
rtcChannel | 当前的 RtcChannel 对象。 |
void io.agora.rtc.IRtcChannelEventHandler.onTokenPrivilegeWillExpire | ( | RtcChannel | rtcChannel, |
String | token | ||
) |
Token 服务即将过期回调。
如果在加入频道时指定了 token,由于 token 具有一定的时效,在通话过程中如果 token 即将失效,SDK 会提前 30 秒触发该回调,提醒更新 token。
收到该回调时,你需要重新在服务端生成新的 Token,然后调用 renewToken
方法将新生成的 token 传给 SDK。
rtcChannel | 当前的 RtcChannel 对象。 |
token | 服务即将失效的 token。 |
void io.agora.rtc.IRtcChannelEventHandler.onRequestToken | ( | RtcChannel | rtcChannel | ) |
Token 已过期回调。
如果在加入频道时指定了 token,由于 token 具有一定的时效,在通话过程中如果 token 已经失效,SDK 会触发该回调。
收到该回调时,你需要重新在服务端生成新的 Token,然后调用 renewToken
方法将新生成的 token 传给 SDK。
rtcChannel | 当前的 RtcChannel 对象。 |
void io.agora.rtc.IRtcChannelEventHandler.onRtcStats | ( | RtcChannel | rtcChannel, |
RtcStats | stats | ||
) |
void io.agora.rtc.IRtcChannelEventHandler.onNetworkQuality | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | txQuality, | ||
int | rxQuality | ||
) |
通话中每个用户的网络上下行 last mile 质量报告回调。
该回调描述每个用户在通话中的 last mile 网络状态,其中 last mile 是指设备到声网边缘服务器的网络状态。 该回调每 2 秒触发一次。如果远端有多个用户/主播,该回调每 2 秒会被触发多次。
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 用户 ID。表示该回调报告的是持有该 ID 的用户的网络质量。当 uid 为 0 时,返回的是本地用户的网络质量。 |
txQuality | 该用户的上行网络质量,基于上行视频的发送码率、上行丢包率、平均往返时延和网络抖动计算。该值代表当前的上行网络质量,帮助判断是否可以支持当前设置的视频编码属性。 假设上行码率是 1000 Kbps,那么支持 640 × 480 的分辨率、30 fps 的帧率没有问题,但是支持 1280 x 720 的分辨率就会有困难。
|
rxQuality | 该用户的下行网络质量,基于下行网络的丢包率、平均往返延时和网络抖动计算。
|
void io.agora.rtc.IRtcChannelEventHandler.onRemoteVideoStats | ( | RtcChannel | rtcChannel, |
RemoteVideoStats | stats | ||
) |
通话中远端视频流的统计信息回调。
该回调描述远端用户在通话中端到端的视频流状态,针对每个远端用户/主播每 2 秒触发一次。 如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
rtcChannel | 当前的 RtcChannel 对象。 |
stats | 远端视频统计数据:RemoteVideoStats 。 |
void io.agora.rtc.IRtcChannelEventHandler.onRemoteAudioStats | ( | RtcChannel | rtcChannel, |
RemoteAudioStats | stats | ||
) |
通话中远端音频流的统计信息回调。
该回调描述远端用户在通话中端到端的音频流统计信息,针对每个远端用户/主播每 2 秒触发一次。 如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
rtcChannel | 当前的 RtcChannel 对象。 |
stats | 接收到的远端音频统计数据:RemoteAudioStats 。 |
void io.agora.rtc.IRtcChannelEventHandler.onRemoteAudioStateChanged | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | state, | ||
int | reason, | ||
int | elapsed | ||
) |
远端音频状态发生改变回调。
远端用户或主播音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 发生音频状态改变的远端用户 ID。 |
state | 远端音频状态:
|
reason | 远端音频流状态改变的具体原因:
|
elapsed | 从本地调用 joinChannel 方法到发生本事件经历的时间,单位为 ms。 |
void io.agora.rtc.IRtcChannelEventHandler.onAudioPublishStateChanged | ( | RtcChannel | rtcChannel, |
int | oldState, | ||
int | newState, | ||
int | elapseSinceLastState | ||
) |
音频发布状态改变回调。
发布状态包括:
rtcChannel | 当前的 RtcChannel 对象。 |
oldState | 之前的发布状态。 |
newState | 当前的发布状态。 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
void io.agora.rtc.IRtcChannelEventHandler.onVideoPublishStateChanged | ( | RtcChannel | rtcChannel, |
int | oldState, | ||
int | newState, | ||
int | elapseSinceLastState | ||
) |
视频发布状态改变回调。
发布状态报告:
rtcChannel | 当前的 RtcChannel 对象。 |
oldState | 之前的发布状态。 |
newState | 当前的发布状态。 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
void io.agora.rtc.IRtcChannelEventHandler.onFirstRemoteVideoFrame | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | width, | ||
int | height, | ||
int | elapsed | ||
) |
已显示远端视频首帧回调。
第一帧远端视频显示在视图上时,触发此调用。App 可在此调用中获知出图时间(elapsed)。
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 用户 ID,指定是哪个用户的视频流。 |
width | 视频流宽(像素)。 |
height | 视频流高(像素)。 |
elapsed | 从本地用户调用 joinChannel 加入频道开始到发生此事件过去的时间(毫秒)。 |
void io.agora.rtc.IRtcChannelEventHandler.onAudioSubscribeStateChanged | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | oldState, | ||
int | newState, | ||
int | elapseSinceLastState | ||
) |
音频订阅状态发生改变回调。
订阅状态包括:
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 远端用户的 ID。 |
oldState | 之前的订阅状态。 |
newState | 当前的订阅状态。 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
void io.agora.rtc.IRtcChannelEventHandler.onVideoSubscribeStateChanged | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | oldState, | ||
int | newState, | ||
int | elapseSinceLastState | ||
) |
视频订阅状态发生改变回调。
订阅状态包括:
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 远端用户的 ID。 |
oldState | 之前的订阅状态。 |
newState | 当前的订阅状态。 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
void io.agora.rtc.IRtcChannelEventHandler.onActiveSpeaker | ( | RtcChannel | rtcChannel, |
int | uid | ||
) |
监测到远端最活跃用户回调。
成功调用 enableAudioVolumeIndication
后, SDK 会持续监测音量最大的远端用户,并统计该用户被判断为音量最大者的次数。当前时间段内,该次数累积最多的远端用户为最活跃的用户。
当频道内用户数量大于或等于 2 且有活跃用户时,SDK 会触发该回调并报告最活跃用户的 uid
。
onActiveSpeaker
回调。uid
。rtcChannel | 当前的 RtcChannel 对象。 |
uid | 远端最活跃用户的 ID。 |
void io.agora.rtc.IRtcChannelEventHandler.onVideoSizeChanged | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | width, | ||
int | height, | ||
int | rotation | ||
) |
本地或远端视频大小或旋转信息发生改变回调。
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 图像尺寸和旋转信息发生变化的用户 ID。如果返回的 uid 为 0,则表示本地用户。 |
width | 视频流的宽度(像素)。 |
height | 视频流的高度(像素)。 |
rotation | 旋转信息 [0,360]。 |
void io.agora.rtc.IRtcChannelEventHandler.onRemoteVideoStateChanged | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | state, | ||
int | reason, | ||
int | elapsed | ||
) |
远端视频状态发生变化回调。
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 发生视频状态改变的远端用户 ID。 |
state | State of the remote video:
|
reason | 远端视频流状态改变的具体原因:
|
elapsed | 从本地用户调用 joinChannel 方法到该触发该回调的时间。 |
void io.agora.rtc.IRtcChannelEventHandler.onUserSuperResolutionEnabled | ( | RtcChannel | rtcChannel, |
int | uid, | ||
boolean | enabled, | ||
int | reason | ||
) |
报告超分辨率功能是否成功开启。(beta 功能)
调用 enableRemoteSuperResolution
后,SDK 触发该回调报告超分辨率是否成功开启。如果未成功开启,请通过 reason
排查问题。
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 远端用户 ID。 |
enabled | 是否对远端视频成功开启超分辨率:
|
reason | 超分辨率功能未成功开启的原因:
|
void io.agora.rtc.IRtcChannelEventHandler.onStreamMessage | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | streamId, | ||
byte[] | data | ||
) |
接收到对方数据流消息的回调。
该回调表示本地用户收到了远端用户调用 sendStreamMessage
方法发送的流消息。
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 发送该流消息的用户 ID。 |
streamId | 数据流 ID。 |
data | 本地用户接收到的数据。 |
void io.agora.rtc.IRtcChannelEventHandler.onStreamMessageError | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | streamId, | ||
int | error, | ||
int | missed, | ||
int | cached | ||
) |
接收对方数据流消息发生错误的回调。
该回调表示本地用户未收到远端用户调用 sendStreamMessage
方法发送的流消息。
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 发送该流消息的用户 ID。 |
streamId | 数据流 ID。 |
error | 发生错误原因:ErrorCode 。 |
missed | 丢失的消息数量。 |
cached | 数据流中断时,后面缓存的消息数量。 |
void io.agora.rtc.IRtcChannelEventHandler.onChannelMediaRelayStateChanged | ( | RtcChannel | rtcChannel, |
int | state, | ||
int | code | ||
) |
跨频道媒体流转发状态发生改变回调。
当跨频道媒体流转发状态发生改变时,SDK 会触发该回调,并报告当前的转发状态以及相关的错误信息。
rtcChannel | 当前的 RtcChannel 对象。 |
state | 跨频道媒体流转发状态:
|
code | 跨频道媒体流转发出错的错误码:
|
void io.agora.rtc.IRtcChannelEventHandler.onChannelMediaRelayEvent | ( | RtcChannel | rtcChannel, |
int | code | ||
) |
跨频道媒体流转发事件回调。
void io.agora.rtc.IRtcChannelEventHandler.onRtmpStreamingStateChanged | ( | RtcChannel | rtcChannel, |
String | url, | ||
int | state, | ||
int | errCode | ||
) |
RTMP/RTMPS 推流状态发生改变回调。
RTMP/RTMPS 推流状态发生改变时,SDK 会触发该回调,并在回调中明确状态发生改变的 URL 地址及当前推流状态; 当推流状态为 RTMP_STREAM_PUBLISH_STATE_FAILURE(4) 时,你可以在 errCode
参数中查看返回的错误信息。 该回调方便推流用户了解当前的推流状态;推流出错时,你可以通过返回的错误码了解出错的原因,方便排查问题。
rtcChannel | 当前的 RtcChannel 对象。 |
url | 推流状态发生改变的 URL 地址。 |
state | 当前的推流状态:
|
errCode | 详细的推流错误信息:
|
void io.agora.rtc.IRtcChannelEventHandler.onTranscodingUpdated | ( | RtcChannel | rtcChannel | ) |
旁路推流设置被更新回调。
setLiveTranscoding
方法中的直播转码参数 LiveTranscoding
更新时, 该回调会被触发,并向主播报告更新信息。
setLiveTranscoding
方法设置转码参数时,不会触发该回调。rtcChannel | 当前的 RtcChannel 对象。 |
void io.agora.rtc.IRtcChannelEventHandler.onRtmpStreamingEvent | ( | RtcChannel | rtcChannel, |
String | url, | ||
int | errCode | ||
) |
RTMP/RTMPS 推流事件回调。
rtcChannel | 当前的 RtcChannel 对象。 |
url | RTMP/RTMPS 推流 URL。 |
errCode | RTMP/RTMPS 推流事件码。
|
void io.agora.rtc.IRtcChannelEventHandler.onLocalPublishFallbackToAudioOnly | ( | RtcChannel | rtcChannel, |
boolean | isFallbackOrRecover | ||
) |
如果你调用了设置本地推流回退选项 setLocalPublishFallbackOption
接口并将 option
设置为 AUDIO_ONLY(2)
时,当上行网络环境不理想、本地发布的媒体流回退为音频流时,或当上行网络改善、媒体流恢复为音视频流时,会触发该回调。如果本地推流已回退为音频流,远端的 app 上会收到 onRemoteVideoStateChanged
的回调事件。
rtcChannel | 当前的 RtcChannel 对象。 |
isFallbackOrRecover | 本地推流已回退或恢复:
|
void io.agora.rtc.IRtcChannelEventHandler.onRemoteSubscribeFallbackToAudioOnly | ( | RtcChannel | rtcChannel, |
int | uid, | ||
boolean | isFallbackOrRecover | ||
) |
远端订阅流已回退为音频流回调或因网络质量改善,恢复为音视频流。
如果你调用了设置远端订阅流回退选项 setRemoteSubscribeFallbackOption
接口, 并将 option 设置为 STREAM_FALLBACK_OPTION_AUDIO_ONLY(2),当下行网络环境不理想、仅接收远端音频流时,或当下行网络改善、恢复订阅音视频流时,会触发该回调。
onRemoteVideoStats
回调来监控远端视频大小流的切换。rtcChannel | 当前的 RtcChannel 对象。 |
uid | 远端用户的 ID。 |
isFallbackOrRecover | 远端订阅流已回退或恢复:
|
void io.agora.rtc.IRtcChannelEventHandler.onProxyConnected | ( | RtcChannel | rtcChannel, |
int | uid, | ||
int | proxyType, | ||
String | localProxyIp, | ||
int | elapsed | ||
) |
代理连接状态回调。
通过该回调你可以监听 SDK 连接代理的状态。例如,当用户调用 setCloudProxy
或 setLocalAccessPoint
设置云代理或本地代理 并成功加入频道后,SDK 会触发该回调报告用户 ID、连接的代理类型和从调用 joinChannel
到触发该回调经过的时间等。
rtcChannel | 当前的 RtcChannel 对象。 |
uid | 用户 ID。 |
proxyType | 连接上的代理类型:
|
localProxyIp | 本地代理的 IP 地址。当 proxyType 的值不为 3 时,该参数的值为空。 |
elapsed | 从调用 joinChannel 到 SDK 触发该回调的经过的时间(毫秒)。 |
void io.agora.rtc.IRtcChannelEventHandler.onClientRoleChangeFailed | ( | RtcChannel | rtcChannel, |
int | reason, | ||
int | currentRole | ||
) |
直播场景下切换用户角色失败回调。
直播场景下,本地用户加入频道后调用 setClientRole
切换用户角色失败时, SDK 会触发该回调,报告切换失败的原因和当前的用户角色。
rtcChannel | 当前 RtcChannel 实例。 |
reason | 切换用户角色失败的原因: |
currentRole | 当前的用户角色: |