类 | |
class | AgoraFacePositionInfo |
class | AudioFileInfo |
class | AudioVolumeInfo |
class | ClientRole |
class | ErrorCode |
class | ExperiencePoorReason |
class | ExperienceQuality |
class | LastmileProbeResult |
class | LocalAudioStats |
class | LocalVideoStats |
class | Quality |
class | RemoteAudioStats |
class | RemoteVideoStats |
class | RtcStats |
class | UserOfflineReason |
class | VideoProfile |
class | WarnCode |
class | WlAccAction |
class | WlAccReason |
class | WlAccStats |
Public 成员函数 | |
void | onWarning (int warn) |
void | onError (int err) |
void | onJoinChannelSuccess (String channel, int uid, int elapsed) |
void | onRejoinChannelSuccess (String channel, int uid, int elapsed) |
void | onLeaveChannel (RtcStats stats) |
void | onClientRoleChanged (int oldRole, int newRole) |
void | onLocalUserRegistered (int uid, String userAccount) |
void | onUserInfoUpdated (int uid, UserInfo userInfo) |
void | onUserJoined (int uid, int elapsed) |
void | onUserOffline (int uid, int reason) |
void | onProxyConnected (String channel, int uid, int proxyType, String localProxyIp, int elapsed) |
void | onConnectionStateChanged (int state, int reason) |
void | onConnectionInterrupted () |
void | onConnectionLost () |
void | onConnectionBanned () |
void | onApiCallExecuted (int error, String api, String result) |
void | onTokenPrivilegeWillExpire (String token) |
void | onRequestToken () |
void | onMicrophoneEnabled (boolean enabled) |
void | onAudioVolumeIndication (AudioVolumeInfo[] speakers, int totalVolume) |
void | onLocalVoicePitchInHz (int pitchInHz) |
void | onActiveSpeaker (int uid) |
void | onFirstLocalAudioFrame (int elapsed) |
void | onFirstLocalAudioFramePublished (int elapsed) |
void | onFirstRemoteAudioFrame (int uid, int elapsed) |
void | onFirstRemoteAudioDecoded (int uid, int elapsed) |
void | onVideoStopped () |
void | onFirstLocalVideoFrame (int width, int height, int elapsed) |
void | onFirstLocalVideoFramePublished (int elapsed) |
void | onFirstRemoteVideoDecoded (int uid, int width, int height, int elapsed) |
void | onFirstRemoteVideoFrame (int uid, int width, int height, int elapsed) |
void | onUserMuteAudio (int uid, boolean muted) |
void | onUserMuteVideo (int uid, boolean muted) |
void | onUserEnableVideo (int uid, boolean enabled) |
void | onUserEnableLocalVideo (int uid, boolean enabled) |
void | onVideoSizeChanged (int uid, int width, int height, int rotation) |
void | onRemoteAudioStateChanged (int uid, int state, int reason, int elapsed) |
void | onAudioPublishStateChanged (String channel, int oldState, int newState, int elapseSinceLastState) |
void | onVideoPublishStateChanged (String channel, int oldState, int newState, int elapseSinceLastState) |
void | onAudioSubscribeStateChanged (String channel, int uid, int oldState, int newState, int elapseSinceLastState) |
void | onVideoSubscribeStateChanged (String channel, int uid, int oldState, int newState, int elapseSinceLastState) |
void | onRemoteVideoStateChanged (int uid, int state, int reason, int elapsed) |
void | onUserSuperResolutionEnabled (int uid, boolean enabled, int reason) |
void | onVirtualBackgroundSourceEnabled (boolean enabled, int reason) |
void | onSnapshotTaken (String channel, int uid, String filePath, int width, int height, int errCode) |
void | onChannelMediaRelayStateChanged (int state, int code) |
void | onChannelMediaRelayEvent (int code) |
void | onLocalPublishFallbackToAudioOnly (boolean isFallbackOrRecover) |
void | onRemoteSubscribeFallbackToAudioOnly (int uid, boolean isFallbackOrRecover) |
void | onAudioRouteChanged (int routing) |
void | onCameraReady () |
void | onCameraFocusAreaChanged (Rect rect) |
void | onCameraExposureAreaChanged (Rect rect) |
void | onFacePositionChanged (int imageWidth, int imageHeight, AgoraFacePositionInfo[] faces) |
void | onAudioQuality (int uid, int quality, short delay, short lost) |
void | onRtcStats (RtcStats stats) |
void | onLastmileQuality (int quality) |
void | onLastmileProbeResult (LastmileProbeResult result) |
void | onNetworkQuality (int uid, int txQuality, int rxQuality) |
void | onWlAccMessage (int reason, int action, String wlAccMsg) |
void | onWlAccStats (WlAccStats currentStats, WlAccStats averageStats) |
void | onLocalVideoStats (LocalVideoStats stats) |
void | onRemoteVideoStats (RemoteVideoStats stats) |
void | onLocalAudioStats (LocalAudioStats stats) |
void | onRemoteAudioStats (RemoteAudioStats stats) |
void | onLocalVideoStat (int sentBitrate, int sentFrameRate) |
void | onRemoteVideoStat (int uid, int delay, int receivedBitrate, int receivedFrameRate) |
void | onRemoteAudioTransportStats (int uid, int delay, int lost, int rxKBitRate) |
void | onRemoteVideoTransportStats (int uid, int delay, int lost, int rxKBitRate) |
void | onAudioMixingStateChanged (int state, int reason) |
void | onAudioMixingFinished () |
void | onAudioEffectFinished (int soundId) |
void | onLocalAudioStateChanged (int state, int error) |
void | onRequestAudioFileInfo (AudioFileInfo info, int error) |
void | onLocalVideoStateChanged (int localVideoState, int error) |
void | onRtmpStreamingStateChanged (String url, int state, int errCode) |
void | onStreamPublished (String url, int error) |
void | onStreamUnpublished (String url) |
void | onTranscodingUpdated () |
void | onRtmpStreamingEvent (String url, int error) |
void | onStreamMessage (int uid, int streamId, byte[] data) |
void | onStreamMessageError (int uid, int streamId, int error, int missed, int cached) |
void | onMediaEngineLoadSuccess () |
void | onMediaEngineStartCallSuccess () |
void | onNetworkTypeChanged (int type) |
void | onClientRoleChangeFailed (int reason, int currentRole) |
主回调事件。
IRtcEngineEventHandler 接口类用于SDK向 App 发送回调事件通知,App 通过继承该接口类的方法获取 SDK 的事件通知。 接口类的所有方法都有缺省(空)实现, App 可以根据需要只继承关心的事件。在回调方法中,App 不应该做耗时或者调用可能会引起阻塞的 API(如 SendMessage),否则可能影响 SDK 的运行。
IRtcEngineEventHandler
类回调中自行实现的代码逻辑中的异常。你需要自行处理该异常,否则异常出现时可能引起 app 崩溃。 void io.agora.rtc.IRtcEngineEventHandler.onWarning | ( | int | warn | ) |
发生警告回调。
该回调方法表示 SDK 运行时出现了(网络或媒体相关的)警告。通常情况下,SDK 上报的警告信息 App 可以忽略,SDK 会自动恢复。 例如和服务器失去连接时,SDK 可能会上报 WARN_LOOKUP_CHANNEL_TIMEOUT
警告,同时自动尝试重连。
warn | 警告代码,详细定义见 Warning Code |
void io.agora.rtc.IRtcEngineEventHandler.onError | ( | int | err | ) |
发生错误回调。
表示 SDK 运行时出现了(网络或媒体相关的)错误。通常情况下,SDK 上报的错误意味着 SDK 无法自动恢复,需要 App 干预或提示用户。例如启动通话失败时,SDK 会上报 ERR_START_CALL
错误。App 可以提示用户启动通话失败,并调用 leaveChannel
退出频道。
err | 错误代码,详细定义见 Error Code |
void io.agora.rtc.IRtcEngineEventHandler.onJoinChannelSuccess | ( | String | channel, |
int | uid, | ||
int | elapsed | ||
) |
加入频道回调。
表示客户端已经登入服务器,且分配了频道 ID 和用户 ID。频道 ID 的分配是根据 joinChannel
方法中指定的频道名称。如果调用 joinChannel 时并未指定用户 ID,服务器就会分配一个。
channel | 频道名 |
uid | 用户 ID 。如果 joinChannel 中指定了 uid,则此处返回该 ID;否则使用声网服务器自动分配的 ID |
elapsed | 从 joinChannel 开始到发生此事件过去的时间(毫秒) |
void io.agora.rtc.IRtcEngineEventHandler.onRejoinChannelSuccess | ( | String | channel, |
int | uid, | ||
int | elapsed | ||
) |
重新加入频道回调。
有时候由于网络原因,客户端可能会和服务器失去连接,SDK 会进行自动重连,自动重连成功后触发此回调方法。
channel | 频道名 |
uid | 用户 ID。如果 joinChannel 中指定了 uid,则此处返回该 ID;否则使用声网服务器自动分配的 ID |
elapsed | 从调用 joinChannel 方法到触发该回调的时间间隔(毫秒)。 |
void io.agora.rtc.IRtcEngineEventHandler.onLeaveChannel | ( | RtcStats | stats | ) |
离开频道回调。
App 调用 leaveChannel
方法时,SDK 提示 App 离开频道成功。 在该回调方法中,App 可以得到此次通话的总通话时长、SDK 收发数据的流量等信息。
stats | 通话相关的统计信息:RtcStats |
void io.agora.rtc.IRtcEngineEventHandler.onClientRoleChanged | ( | int | oldRole, |
int | newRole | ||
) |
直播场景下用户角色切换成功回调。
直播场景下,本地用户加入频道后调用 setClientRole
成功改变用户角色时, 例如主播切换为观众,或观众切换为主播,SDK 会触发该回调,报告切换前和切换后的角色。
oldRole | 切换前的角色:
|
newRole | 切换后的角色:
|
void io.agora.rtc.IRtcEngineEventHandler.onLocalUserRegistered | ( | int | uid, |
String | userAccount | ||
) |
本地用户成功注册 User Account 回调。
本地用户成功调用 registerLocalUserAccount
方法注册用户 User Account,或调用 joinChannelWithUserAccount
加入频道后,SDK 会触发该回调,并告知本地用户的 UID 和 User Account。
uid | 本地用户的 ID |
userAccount | 本地用户的 User Account |
void io.agora.rtc.IRtcEngineEventHandler.onUserInfoUpdated | ( | int | uid, |
UserInfo | userInfo | ||
) |
远端用户信息已更新回调。
远端用户加入频道后, SDK 会获取到该远端用户的 UID 和 User Account,然后缓存一个包含了远端用户 UID 和 User Account 的 Mapping 表,并在本地触发该回调。
uid | 本地用户 ID |
userInfo | 标识用户信息的 UserInfo 对象,包含用户 UID 和 User Account,详见 UserInfo 类 |
void io.agora.rtc.IRtcEngineEventHandler.onUserJoined | ( | int | uid, |
int | elapsed | ||
) |
远端用户(通信场景)/主播(直播场景)加入当前频道回调。
该回调在如下情况下会被触发:
joinChannel
方法加入频道。setClientRole
将用户角色改变为主播。uid | 新加入频道的远端用户/主播 ID |
elapsed | 从本地用户调用 joinChannel /setClientRole 到触发该回调的延迟(毫秒) |
void io.agora.rtc.IRtcEngineEventHandler.onUserOffline | ( | int | uid, |
int | reason | ||
) |
远端用户(通信场景)/主播(直播场景)离开当前频道回调。
提示有远端用户/主播离开了频道(或掉线)。用户离开频道有两个原因,即正常离开和超时掉线:
uid | 主播 ID |
reason | 离线原因:
|
void io.agora.rtc.IRtcEngineEventHandler.onProxyConnected | ( | String | channel, |
int | uid, | ||
int | proxyType, | ||
String | localProxyIp, | ||
int | elapsed | ||
) |
代理连接状态回调。
通过该回调你可以监听 SDK 连接代理的状态。例如,当用户调用 setCloudProxy
或 setLocalAccessPoint
设置云代理或本地代理 并成功加入频道后,SDK 会触发该回调报告用户 ID、连接的代理类型和从调用 joinChannel
到触发该回调经过的时间等。
channel | 频道名称。 |
uid | 用户 ID。 |
proxyType | 连接上的代理类型:
|
localProxyIp | 本地代理的 IP 地址。当 proxyType 的值不为 3 时,该参数的值为空。 |
elapsed | 从调用 joinChannel 到 SDK 触发该回调的经过的时间(毫秒)。 |
void io.agora.rtc.IRtcEngineEventHandler.onConnectionStateChanged | ( | int | state, |
int | reason | ||
) |
网络连接状态已改变回调。
该回调在网络连接状态发生改变的时候触发,并告知用户当前的网络连接状态,和引起网络状态改变的原因。
state | 当前的网络连接状态:
|
reason | 引起当前网络连接状态发生改变的原因:
|
void io.agora.rtc.IRtcEngineEventHandler.onConnectionInterrupted | ( | ) |
网络连接中断回调。
onConnectionStateChanged
回调。SDK 在和服务器建立连接后,失去了网络连接超过 4 秒,会触发该回调。在触发事件后,SDK 会主动重连服务器,所以该事件可以用于 UI 提示。 与 onConnectionLost
回调的区别是:
onConnectionInterrupted
回调一定是发生在 joinChannel()
成功后,且 SDK 刚失去和服务器连接超过 4 秒时触发 onConnectionLost
回调是无论之前 joinChannel()
是否连接成功,只要 10 秒内和服务器无法建立连接都会触发 如果 SDK 在断开连接后,20 分钟内还是没能重新加入频道,SDK 会停止尝试重连。
void io.agora.rtc.IRtcEngineEventHandler.onConnectionLost | ( | ) |
网络连接中断,且 SDK 无法在 10 秒内连接服务器回调。
SDK 在调用 joinChannel()
后,无论是否加入成功,只要 10 秒和服务器无法连接就会触发该回调。 与 onConnectionInterrupted
回调的区别是:
onConnectionInterrupted
回调一定是发生在 joinChannel()
成功后,且 SDK 刚失去和服务器连接 4 秒时触发 onConnectionLost
回调是无论之前 joinChannel()
是否连接成功,只要 10 秒内和服务器无法建立连接都会触发 如果 SDK 在断开连接后,20 分钟内还是没能重新加入频道,SDK 会停止尝试重连。
void io.agora.rtc.IRtcEngineEventHandler.onConnectionBanned | ( | ) |
网络连接已被服务器禁止回调。
onConnectionStateChanged
回调。当你被服务端禁掉连接的权限时,会触发该回调。
void io.agora.rtc.IRtcEngineEventHandler.onApiCallExecuted | ( | int | error, |
String | api, | ||
String | result | ||
) |
API 方法已执行回调。
error | 错误码。如果方法调用失败,会返回错误码 Error code ;如果返回 0,则表示方法调用成功 |
api | SDK 所调用的 API |
result | SDK 调用 API 的调用结果 |
void io.agora.rtc.IRtcEngineEventHandler.onTokenPrivilegeWillExpire | ( | String | token | ) |
Token 服务即将过期回调。
在调用 joinChannel
时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发该回调,提醒 App 更新 Token。当收到该回调时,你需要重新在服务端生成新的 Token,然后调用 renewToken
将新生成的 Token 传给 SDK。
token | 即将服务失效的 Token |
void io.agora.rtc.IRtcEngineEventHandler.onRequestToken | ( | ) |
Token 过期回调。
在调用 joinChannel
时如果指定了 Token,
由于 Token 具有一定的时效,在通话过程中 SDK 可能由于网络原因和服务器失去连接,重连时可能需要新的 Token。
该回调通知 App 需要生成新的 Token,并调用 renewToken
更新 Token。
void io.agora.rtc.IRtcEngineEventHandler.onMicrophoneEnabled | ( | boolean | enabled | ) |
麦克风状态已改变回调。
onLocalAudioStateChanged
回调中的 LOCAL_AUDIO_STREAM_STATE_STOPPED(0) 或 LOCAL_AUDIO_STREAM_STATE_CAPTURING(1)。该回调由本地用户调用 enableLocalAudio
方法开启或关闭本地音频采集触发的。
enabled |
|
void io.agora.rtc.IRtcEngineEventHandler.onAudioVolumeIndication | ( | AudioVolumeInfo[] | speakers, |
int | totalVolume | ||
) |
用户音量提示回调。
该回调默认禁用。可以通过 enableAudioVolumeIndication
方法开启。开启后,只要频道内有发流用户,SDK 会在加入频道后按 enableAudioVolumeIndication
中设置的时间间隔触发 onAudioVolumeIndication
回调。每次会触发两个 onAudioVolumeIndication
回调,一个报告本地发流用户的音量相关信息,另一个报告瞬时音量最高的远端用户(最多 3 位)的音量相关信息。
muteLocalAudioStream
),SDK 行为会受如下影响:speakers | 用户音量信息,详见 AudioVolumeInfo 数组。如果 speakers 为空,则表示远端用户不发流或没有远端用户。 |
totalVolume | 混音后的总音量,取值范围为 [0,255]。
|
void io.agora.rtc.IRtcEngineEventHandler.onLocalVoicePitchInHz | ( | int | pitchInHz | ) |
报告本地用户的语音音调。
开启本地音频采集并调用 enableLocalVoicePitchCallback
后,SDK 会按 enableLocalVoicePitchCallback
中设置的时间间隔触发 onLocalVoicePitchInHz
回调,报告本地用户的语音音调。
enableLocalAudio(false)
,SDK 会停止发送 onLocalVoicePitchInHz
pitchInHz | 本地用户的语音音调,单位为 Hz。 |
void io.agora.rtc.IRtcEngineEventHandler.onActiveSpeaker | ( | int | uid | ) |
监测到远端最活跃用户回调。
成功调用 enableAudioVolumeIndication
后, SDK 会持续监测音量最大的远端用户,并统计该用户被判断为音量最大者的次数。当前时间段内,该次数累积最多的远端用户为最活跃的用户。
当频道内用户数量大于或等于 2 且有活跃用户时,SDK 会触发该回调并报告最活跃用户的 uid
。
onActiveSpeaker
回调。uid
。uid | 远端最活跃用户的 ID。 |
void io.agora.rtc.IRtcEngineEventHandler.onFirstLocalAudioFrame | ( | int | elapsed | ) |
已发送本地音频首帧回调。
IRtcEngineEventHandler#onFirstLocalAudioFramePublished()
。 elapsed | 从本地用户调用 joinChannel 方法直至该回调被触发的延迟(毫秒) |
void io.agora.rtc.IRtcEngineEventHandler.onFirstLocalAudioFramePublished | ( | int | elapsed | ) |
已发布本地音频首帧回调。
SDK 会在以下三种时机触发该回调:
joinChannel
成功加入频道后。muteLocalAudioStream
(true),再调用 muteLocalAudioStream
(false) 后。disableAudio
,再调用 enableAudio
后。pushExternalAudioFrame
成功向 SDK 推送音频帧后。elapsed | 从调用 joinChannel 方法到触发该回调的时间间隔(毫秒)。 |
void io.agora.rtc.IRtcEngineEventHandler.onFirstRemoteAudioFrame | ( | int | uid, |
int | elapsed | ||
) |
已接收远端音频首帧回调。
onRemoteAudioStateChanged
中的 REMOTE_AUDIO_STATE_STARTING(1)。 uid | 发送音频帧的远端用户的 ID |
elapsed | 从调用 joinChannel 方法直至该回调被触发的延迟(毫秒) |
void io.agora.rtc.IRtcEngineEventHandler.onFirstRemoteAudioDecoded | ( | int | uid, |
int | elapsed | ||
) |
已解码远端音频首帧回调。
onRemoteAudioStateChanged
中的 REMOTE_AUDIO_STATE_DECODING(2)。SDK 完成远端音频首帧解码,并发送给音频模块用以播放时,会触发此回调。有两种情况:
muteLocalAudioStream
方法)。disableAudio
方法)。uid | 用户 ID,指定是哪个用户的音频流 |
elapsed | 从本地用户调用 joinChannel 方法加入频道直至该回调触发的延迟,单位为毫秒 |
void io.agora.rtc.IRtcEngineEventHandler.onVideoStopped | ( | ) |
视频功能停止回调。
onLocalVideoStateChanged
回调中的 LOCAL_VIDEO_STREAM_STATE_STOPPED(0)
。 提示视频功能已停止。 App 如需在停止视频后对 view 做其他处理(例如显示其他画面),可以在这个回调中进行。
void io.agora.rtc.IRtcEngineEventHandler.onFirstLocalVideoFrame | ( | int | width, |
int | height, | ||
int | elapsed | ||
) |
已显示本地视频首帧回调。
第一帧本地视频显示在本地视图上时,触发此回调。
width | 本地渲染视频的宽(px) |
height | 本地渲染视频的高(px) |
elapsed | 从本地用户调用 joinChannel 方法直至该回调被触发的延迟(毫秒) 如果在 joinChannel 之前调用了 startPreview ,则返回的是从调用 startPreview 直至该回调被触发的延迟(毫秒) |
void io.agora.rtc.IRtcEngineEventHandler.onFirstLocalVideoFramePublished | ( | int | elapsed | ) |
已发布本地视频首帧回调。
SDK 会在以下时机触发该回调:
joinChannel
成功加入频道后。muteLocalVideoStream
(true),再调用 muteLocalVideoStream
(false) 后。disableVideo
,再调用 enableVideo
后。pushExternalVideoFrame
成功向 SDK 推送视频帧后。 elapsed | 从调用 joinChannel 方法到触发该回调的时间间隔(毫秒)。 |
void io.agora.rtc.IRtcEngineEventHandler.onFirstRemoteVideoDecoded | ( | int | uid, |
int | width, | ||
int | height, | ||
int | elapsed | ||
) |
已完成远端视频首帧解码回调。
本地收到远端第一个视频帧并解码成功后,会触发该回调。有两种情况:
其中,视频离线与用户离线不同。视频离线指本地在 15 秒内没有收到视频包,可能有如下原因:
muteLocalVideoStream
) disableVideo
) uid | 用户 ID,指定是哪个用户的视频流 |
width | 视频流宽(像素) |
height | 视频流高(像素) |
elapsed | 从本地用户调用 joinChannel 方法直至该回调被触发的延迟(毫秒) |
void io.agora.rtc.IRtcEngineEventHandler.onFirstRemoteVideoFrame | ( | int | uid, |
int | width, | ||
int | height, | ||
int | elapsed | ||
) |
已显示远端视频首帧回调。 第一帧远端视频显示在视图上时,触发此调用。App 可在此调用中获知出图时间(elapsed)。
uid | 用户 ID,指定是哪个用户的视频流 |
width | 视频流宽(像素) |
height | 视频流高(像素) |
elapsed | 从本地用户调用 joinChannel 加入频道开始到发生此事件过去的时间(毫秒) |
void io.agora.rtc.IRtcEngineEventHandler.onUserMuteAudio | ( | int | uid, |
boolean | muted | ||
) |
远端用户停止/恢复发送音频流回调。
提示有其他用户将他的音频流静音/取消静音。
该回调是由远端用户调用 muteLocalAudioStream
方法关闭或开启音频发送触发的。
uid | 用户 ID |
muted | 该用户是否静音:
|
void io.agora.rtc.IRtcEngineEventHandler.onUserMuteVideo | ( | int | uid, |
boolean | muted | ||
) |
远端用户取消或恢复发布视频流回调。
当远端用户调用 muteLocalVideoStream
取消或恢复发布视频流时,SDK 会触发该回调向本地用户报告远端用户的发流状况。
uid | 远端用户 UID。 |
muted | 远端用户是否取消发布视频流:
|
void io.agora.rtc.IRtcEngineEventHandler.onUserEnableVideo | ( | int | uid, |
boolean | enabled | ||
) |
远端用户开/关视频模块回调。
提示有其他用户启用/关闭了视频功能。
该回调是由远端用户调用 enableVideo
或 disableVideo
方法开启或关闭视频模块触发的。
uid | 用户 ID,提示是哪个用户的视频流 |
enabled |
|
void io.agora.rtc.IRtcEngineEventHandler.onUserEnableLocalVideo | ( | int | uid, |
boolean | enabled | ||
) |
远端用户开/关本地视频采集回调。
提示有其他用户启用/关闭了本地视频功能。
该回调是由远端用户调用 enableLocalVideo
方法开启或关闭视频采集触发的。
uid | 用户 ID,提示是哪个用户的视频流 |
enabled |
|
void io.agora.rtc.IRtcEngineEventHandler.onVideoSizeChanged | ( | int | uid, |
int | width, | ||
int | height, | ||
int | rotation | ||
) |
本地或远端视频大小或旋转信息发生改变回调。
uid | 图像尺寸和旋转信息发生变化的用户 ID。如果返回的 uid 为 0,则表示本地用户 |
width | 视频流的宽度(像素) |
height | 视频流的高度(像素) |
rotation | 旋转信息 [0,360] |
void io.agora.rtc.IRtcEngineEventHandler.onRemoteAudioStateChanged | ( | int | uid, |
int | state, | ||
int | reason, | ||
int | elapsed | ||
) |
远端音频状态发生改变回调。
远端用户(通信场景)或主播(直播场景)音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。
uid | 发生音频状态改变的远端用户 ID |
state | 远端音频流状态:
|
reason | 远端音频流状态改变的具体原因:
|
elapsed | 从本地用户调用 joinChannel 方法到发生本事件经历的时间,单位为 ms |
void io.agora.rtc.IRtcEngineEventHandler.onAudioPublishStateChanged | ( | String | channel, |
int | oldState, | ||
int | newState, | ||
int | elapseSinceLastState | ||
) |
音频发布状态改变回调。
发布状态包括:
channel | 频道名。 |
oldState | 之前的发布状态。 |
newState | 当前的发布状态。 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
void io.agora.rtc.IRtcEngineEventHandler.onVideoPublishStateChanged | ( | String | channel, |
int | oldState, | ||
int | newState, | ||
int | elapseSinceLastState | ||
) |
视频发布状态改变回调。
发布状态包括:
channel | 频道名。 |
oldState | 之前的发布状态。 |
newState | 当前的发布状态。 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
void io.agora.rtc.IRtcEngineEventHandler.onAudioSubscribeStateChanged | ( | String | channel, |
int | uid, | ||
int | oldState, | ||
int | newState, | ||
int | elapseSinceLastState | ||
) |
音频订阅状态发生改变回调。
订阅状态包括:
channel | 频道名。 |
uid | 远端用户的 ID。 |
oldState | 之前的订阅状态。 |
newState | 当前的订阅状态。 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
void io.agora.rtc.IRtcEngineEventHandler.onVideoSubscribeStateChanged | ( | String | channel, |
int | uid, | ||
int | oldState, | ||
int | newState, | ||
int | elapseSinceLastState | ||
) |
视频订阅状态发生改变回调。
订阅状态包括:
channel | 频道名。 |
uid | 远端用户的 ID。 |
oldState | 之前的订阅状态。 |
newState | 当前的订阅状态。 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
void io.agora.rtc.IRtcEngineEventHandler.onRemoteVideoStateChanged | ( | int | uid, |
int | state, | ||
int | reason, | ||
int | elapsed | ||
) |
远端用户视频状态发生改变回调。
uid | 发生视频状态改变的远端用户 ID |
state | 远端视频流状态:
|
reason | 远端视频流状态改变的具体原因:
|
elapsed | 从本地用户调用 joinChannel 方法到发生本事件经历的时间,单位为 ms |
void io.agora.rtc.IRtcEngineEventHandler.onUserSuperResolutionEnabled | ( | int | uid, |
boolean | enabled, | ||
int | reason | ||
) |
报告超分辨率功能是否成功开启。(beta 功能)
调用 enableRemoteSuperResolution
后,SDK 触发该回调报告超分辨率是否成功开启。如果未成功开启,请通过 reason
排查问题。
uid | 远端用户 ID。 |
enabled | 是否对远端视频成功开启超分辨率:
|
reason | 超分辨率功能未成功开启的原因:
|
void io.agora.rtc.IRtcEngineEventHandler.onVirtualBackgroundSourceEnabled | ( | boolean | enabled, |
int | reason | ||
) |
报告虚拟背景是否成功开启。
调用 enableVirtualBackground
后,SDK 触发该回调报告虚拟背景是否成功开启。
enabled | 是否已成功开启虚拟背景:
|
reason | 虚拟背景开启出错的原因或开启成功的提示。
|
void io.agora.rtc.IRtcEngineEventHandler.onSnapshotTaken | ( | String | channel, |
int | uid, | ||
String | filePath, | ||
int | width, | ||
int | height, | ||
int | errCode | ||
) |
视频截图结果回调。
成功调用 takeSnapshot
后,SDK 触发该回调报告截图是否成功和获取截图的详情。
channel | 频道名。 |
uid | 用户 ID。如果 uid 为 0 ,表示本地用户。 |
filePath | 截图的本地保存路径。 |
width | 图片宽度(px)。 |
height | 图片高度(px)。 |
errCode | 截图成功的提示或失败的原因:
|
void io.agora.rtc.IRtcEngineEventHandler.onChannelMediaRelayStateChanged | ( | int | state, |
int | code | ||
) |
跨频道媒体流转发状态发生改变回调。
当跨频道媒体流转发状态发生改变时,SDK 会触发该回调,并报告当前的转发状态以及相关的错误信息。
state | 跨频道媒体流转发状态:
|
code | 跨频道媒体流转发出错的错误码:
|
void io.agora.rtc.IRtcEngineEventHandler.onChannelMediaRelayEvent | ( | int | code | ) |
跨频道媒体流转发事件回调。
该回调报告跨频道媒体流转发过程中发生的事件。
code | 跨频道媒体流转发事件码:
|
void io.agora.rtc.IRtcEngineEventHandler.onLocalPublishFallbackToAudioOnly | ( | boolean | isFallbackOrRecover | ) |
本地发布流已回退为音频流回调。
如果你调用了设置本地推流回退选项 setLocalPublishFallbackOption
接口并将 option 设置为 AUDIO_ONLY(2)
时,当上行网络环境不理想、本地发布的媒体流回退为音频流时,或当上行网络改善、媒体流恢复为音视频流时,会触发该回调。 如果本地推流已回退为音频流,远端的 App 上会收到 onRemoteVideoStateChanged
的回调事件。
isFallbackOrRecover | 本地推流已回退或恢复:
|
void io.agora.rtc.IRtcEngineEventHandler.onRemoteSubscribeFallbackToAudioOnly | ( | int | uid, |
boolean | isFallbackOrRecover | ||
) |
远端订阅流已回退为音频流回调或因网络质量改善,恢复为音视频流。
如果你调用了设置远端订阅流回退选项 setRemoteSubscribeFallbackOption
接口并将 option 设置为 AUDIO_ONLY(2)
时,当下行网络环境不理想、仅接收远端音频流时,或当下行网络改善、恢复订阅音视频流时,会触发该回调。
远端订阅流因弱网环境不能同时满足音视频而回退为小流时,你可以使用onRemoteVideoStats
回调来监控远端视频大小流的切换。
uid | 远端用户的 ID |
isFallbackOrRecover | 远端订阅流已回退或恢复:
|
void io.agora.rtc.IRtcEngineEventHandler.onAudioRouteChanged | ( | int | routing | ) |
音频路由已变更回调。
routing | 当前的音频路由:
|
void io.agora.rtc.IRtcEngineEventHandler.onCameraReady | ( | ) |
摄像头就绪回调。
onLocalVideoStateChanged
回调中的 LOCAL_VIDEO_STREAM_STATE_CAPTURING(1)
。 提示已成功打开摄像头,可以开始捕获视频。如果摄像头打开失败,可在 onError
中处理相应错误。
void io.agora.rtc.IRtcEngineEventHandler.onCameraFocusAreaChanged | ( | Rect | rect | ) |
摄像头对焦区域已改变回调。
该回调表示相机的对焦区域发生了改变。
该回调是由本地用户调用 setCameraFocusPositionInPreview
方法改变对焦位置触发的。
rect | 镜头内表示对焦的区域 |
void io.agora.rtc.IRtcEngineEventHandler.onCameraExposureAreaChanged | ( | Rect | rect | ) |
void io.agora.rtc.IRtcEngineEventHandler.onFacePositionChanged | ( | int | imageWidth, |
int | imageHeight, | ||
AgoraFacePositionInfo[] | faces | ||
) |
报告本地人脸检测结果。
调用 enableFaceDetection
(true) 开启本地人脸检测后,你可以通过该回调实时获取以下人脸检测的信息:
其中,人脸距设备屏幕的距离由 SDK 通过摄像头采集的画面大小和人脸在 view 中的位置拟合计算得出。
distance
)值有一定误差,请不要用它进行精确计算。imageWidth | 摄像头采集画面的宽度 (px) |
imageHeight | 摄像头采集画面的高度 (px) |
faces | 检测到的人脸信息,详见 AgoraFacePositionInfo 。检测到几张人脸,就会报告几个 AgoraFacePositionInfo 数组。数组长度可以为 0,表示没有检测到摄像头前出现人脸。 |
void io.agora.rtc.IRtcEngineEventHandler.onAudioQuality | ( | int | uid, |
int | quality, | ||
short | delay, | ||
short | lost | ||
) |
远端音频质量回调。
onRemoteAudioStats
方法。该回调描述远端用户在通话中的音频质量,针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
uid | 用户 ID,指定是谁发的音频流 |
quality | 语音质量:
|
delay | 音频包从发送端到接收端的延迟(毫秒)。包括声音采样前处理、网络传输、网络抖动缓冲引起的延迟。 |
lost | 音频包从发送端到接收端的丢包率 (%) |
void io.agora.rtc.IRtcEngineEventHandler.onRtcStats | ( | RtcStats | stats | ) |
void io.agora.rtc.IRtcEngineEventHandler.onLastmileQuality | ( | int | quality | ) |
通话前网络上下行 last mile 质量报告回调。
该回调描述本地用户在加入频道前的 last mile 网络探测的结果,其中 last mile 是指设备到声网边缘服务器的网络状态。在 enableLastmileTest
之后,该回调函数每 2 秒触发一次。如果远端有多个用户/主播,该回调每 2 秒会被触发多次。
quality | 网络上下行质量,基于上下行网络的丢包率和抖动计算,探测结果主要反映上行网络的状态
|
void io.agora.rtc.IRtcEngineEventHandler.onLastmileProbeResult | ( | LastmileProbeResult | result | ) |
通话前网络上下行 Last mile 质量探测报告回调。
在调用 startLastmileProbeTest
之后,SDK 会在约 30 秒内返回该回调。
result | 上下行 Last mile 质量探测结果,详见 LastmileProbeResult 。 |
void io.agora.rtc.IRtcEngineEventHandler.onNetworkQuality | ( | int | uid, |
int | txQuality, | ||
int | rxQuality | ||
) |
通话中每个用户的网络上下行 last mile 质量报告回调。
该回调描述每个用户在通话中的 last mile 网络状态,其中 last mile 是指设备到声网边缘服务器的网络状态。该回调每 2 秒触发一次。如果远端有多个用户/主播,该回调每 2 秒会被触发多次。
txQuality
为 UNKNOWN
; 用户不收流时,rxQuality
为 UNKNOWN
。uid | 用户 ID。表示该回调报告的是持有该 ID 的用户的网络质量。当 uid 为 0 时,返回的是本地用户的网络质量。 |
txQuality | 该用户的上行网络质量,基于上行视频的发送码率、上行丢包率、平均往返时延和网络抖动计算。该值代表当前的上行网络质量,帮助判断是否可以支持当前设置的视频编码属性。假设上行码率是 1000 Kbps,那么支持 640 × 480 的分辨率、30 fps 的帧率没有问题,但是支持 1280 x 720 的分辨率就会有困难
|
rxQuality | 该用户的下行网络质量,基于下行网络的丢包率、平均往返延时和网络抖动计算
|
void io.agora.rtc.IRtcEngineEventHandler.onWlAccMessage | ( | int | reason, |
int | action, | ||
String | wlAccMsg | ||
) |
报告 Wi-Fi 连接质量不佳的原因和改善 Wi-Fi 连接的操作建议。
调用 enableWirelessAccelerate(true)
开启 Wi-Fi 加速功能后, 当 Wi-Fi 连接质量不佳时,SDK 会触发该回调,报告 Wi-Fi 连接质量不佳的原因和改善 Wi-Fi 连接的操作建议。
action
和 wlAccMsg
,提示用户采取网络优化措施,以获得更好的音视频体验。reason | Wi-Fi 连接质量不佳的原因: |
action | 改善 Wi-Fi 连接质量的操作建议:
|
wlAccMsg | 根据 action 的值提供的详细帮助信息:
|
void io.agora.rtc.IRtcEngineEventHandler.onWlAccStats | ( | WlAccStats | currentStats, |
WlAccStats | averageStats | ||
) |
报告 Wi-Fi 加速效果。
调用 enableWirelessAccelerate(true)
开启 Wi-Fi 加速功能后,SDK 每隔两秒触发一次该回调, 报告当前的 Wi-Fi 加速效果和自加入频道后平均的 Wi-Fi 加速效果。 Wi-Fi 加速效果用端到端延时、丢包率和音视频卡顿率三个指标下降的百分比来衡量。
currentStats | 当前的 Wi-Fi 加速效果。详见 WlAccStats 。 |
averageStats | 自加入频道后平均的 Wi-Fi 加速效果。详见 WlAccStats 。 |
void io.agora.rtc.IRtcEngineEventHandler.onLocalVideoStats | ( | LocalVideoStats | stats | ) |
void io.agora.rtc.IRtcEngineEventHandler.onRemoteVideoStats | ( | RemoteVideoStats | stats | ) |
通话中远端视频流的统计信息回调。
该回调描述远端用户在通话中端到端的视频流状态,针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
stats | 远端视频统计数据,详细定义见 Remote Video Stats |
void io.agora.rtc.IRtcEngineEventHandler.onLocalAudioStats | ( | LocalAudioStats | stats | ) |
通话中本地音频流的统计信息回调。
该回调描述本地设备发送音频流的统计信息。SDK 每 2 秒触发该回调一次。
stats | 本地音频统计数据,详见 LocalAudioStats |
void io.agora.rtc.IRtcEngineEventHandler.onRemoteAudioStats | ( | RemoteAudioStats | stats | ) |
通话中远端音频流的统计信息回调。
onAudioQuality
回调。该回调描述远端用户在通话中端到端的音频流统计信息,针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
stats | 接收到的远端音频统计数据,详细定义见 Remote Audio Stats |
void io.agora.rtc.IRtcEngineEventHandler.onLocalVideoStat | ( | int | sentBitrate, |
int | sentFrameRate | ||
) |
本地视频流统计信息回调。
onLocalVideoStats
方法。报告更新本地视频统计信息,该回调函数每两秒触发一次。
sentBitrate | (统计周期内)发送的码率 (Kbps) |
sentFrameRate | (统计周期内)发送的帧率 (fps) |
void io.agora.rtc.IRtcEngineEventHandler.onRemoteVideoStat | ( | int | uid, |
int | delay, | ||
int | receivedBitrate, | ||
int | receivedFrameRate | ||
) |
远端视频流统计信息回调。
onRemoteVideoStats
方法。报告远端视频统计信息,该回调函数每两秒触发一次。
uid | 用户 ID,指定是哪个用户的视频流 |
delay | 延迟(毫秒) |
receivedBitrate | 接收码率(Kbps) |
receivedFrameRate | 接收帧率(fps) |
void io.agora.rtc.IRtcEngineEventHandler.onRemoteAudioTransportStats | ( | int | uid, |
int | delay, | ||
int | lost, | ||
int | rxKBitRate | ||
) |
通话中远端音频流传输的统计信息回调。
onRemoteAudioStats
。该回调描述远端用户通话中端到端的网络统计信息,通过音频包计算,用客观的数据,如丢包、网络延迟等,展示当前网络状态。
通话中,当用户收到远端用户/主播发送的音频数据包后,会每 2 秒触发一次该回调。
和 onRemoteAudioStats
回调相比,该回调以数据展示当前网络状态,因此更客观。
uid | 用户 ID,指定是哪个用户/主播的音频包 |
delay | 音频包从发送端到接收端的延时(毫秒) |
lost | 音频包从发送端到接收端的丢包率 (%) |
rxKBitRate | 远端音频包的接收码率(Kbps) |
void io.agora.rtc.IRtcEngineEventHandler.onRemoteVideoTransportStats | ( | int | uid, |
int | delay, | ||
int | lost, | ||
int | rxKBitRate | ||
) |
通话中远端视频流传输的统计信息回调。
onRemoteVideoStats
。该回调描述远端用户通话中端到端的网络统计信息,通过视频包计算,用客观的数据,如丢包、网络延迟等 ,展示当前网络状态。
通话中,当用户收到远端用户/主播发送的视频数据包后,会每 2 秒触发一次该回调。
和 onRemoteVideoStats
回调相比,该回调以数据展示当前网络状态,因此更客观。
uid | 用户 ID,指定是哪个用户/主播的视频包 |
delay | 视频包从发送端到接收端的延时(毫秒) |
lost | 视频包从发送端到接收端的丢包率 (%) |
rxKBitRate | 远端视频包的接收码率(Kbps) |
void io.agora.rtc.IRtcEngineEventHandler.onAudioMixingStateChanged | ( | int | state, |
int | reason | ||
) |
本地用户的音乐文件播放状态已改变回调。
该回调在音乐文件播放状态发生改变时触发,并报告当前的播放状态和播放状态改变的原因。
startAudioMixing
播放在线音乐文件时,如果遇到网络情况较差,onAudioMixingStateChanged
回调报告 AUDIO_MIXING_STATE_PLAYING
的时刻可能与用户听到音乐的时刻不同。因为 SDK 会在解码第一帧音频帧后触发该回调报告 PLAYING
状态,但在弱网情况下,SDK 无法稳定地接收在线音频包,因此音乐播放不稳定,用户主观感受到的音频开始播放的时刻可能比音频首帧解码的时刻更晚。void io.agora.rtc.IRtcEngineEventHandler.onAudioMixingFinished | ( | ) |
本地音乐文件播放已结束回调。
当调用 startAudioMixing
播放伴奏音乐结束后,会触发该回调。 如果该方法调用失败,会在 onWarning
回调里,返回警告码 WARN_AUDIO_MIXING_OPEN_ERROR
。
void io.agora.rtc.IRtcEngineEventHandler.onAudioEffectFinished | ( | int | soundId | ) |
void io.agora.rtc.IRtcEngineEventHandler.onLocalAudioStateChanged | ( | int | state, |
int | error | ||
) |
本地音频状态发生改变回调。
本地音频的状态发生改变时(包括本地麦克风采集状态和音频编码状态),SDK 会触发该回调报告当前的本地音频状态。 在本地音频出现故障时,该回调可以帮助你了解当前音频的状态以及出现故障的原因,方便你排查问题。
state | 当前的本地音频状态:
|
error | 本地音频出错原因:
|
void io.agora.rtc.IRtcEngineEventHandler.onRequestAudioFileInfo | ( | AudioFileInfo | info, |
int | error | ||
) |
音频文件信息回调。
成功调用 getAudioFileInfo
后,SDK 会触发该回调并报告音频文件的路径、时长等信息。
info | 音频文件信息。详见 AudioFileInfo 。 |
error | 信息获取状态: |
void io.agora.rtc.IRtcEngineEventHandler.onLocalVideoStateChanged | ( | int | localVideoState, |
int | error | ||
) |
本地视频状态发生改变回调。
本地视频的状态发生改变时,SDK 会触发该回调返回当前的本地视频状态。
该接口在本地视频出现故障时,方便你了解当前视频的状态以及出现故障的原因,方便排查问题。
SDK 会在如下情况触发 onLocalVideoStateChanged(LOCAL_VIDEO_STREAM_STATE_FAILED,LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE)
回调:
onLocalVideoStateChanged(LOCAL_VIDEO_STREAM_STATE_CAPTURING,LOCAL_VIDEO_STREAM_ERROR_OK)
回调。摄像头输出采集的视频帧时,如果连续 15 帧中,所有视频帧都一样,SDK 触发 onLocalVideoStateChanged(LOCAL_VIDEO_STREAM_STATE_CAPTURING,LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE)
回调。注意:帧重复检测仅针对分辨率大于 200 × 200,帧率大于等于 10 fps,码率小于 20 Kbps 的视频帧。
屏幕共享时,如未授予应用屏幕采集权限,SDK 会触发 onLocalVideoStateChanged(LOCAL_VIDEO_STREAM_STATE_FAILED,ERR_SCREEN_CAPTURE_PERMISSION_DENIED)
回调。
localVideoState | 当前的本地视频状态:
|
error | 本地视频出错原因:
|
void io.agora.rtc.IRtcEngineEventHandler.onRtmpStreamingStateChanged | ( | String | url, |
int | state, | ||
int | errCode | ||
) |
RTMP/RTMPS 推流状态发生改变回调。
RTMP/RTMPS 推流状态发生改变时,SDK 会触发该回调,并在回调中明确状态发生改变的 URL 地址及当前推流状态;当推流状态为 RTMP_STREAM_PUBLISH_STATE_FAILURE(4)
时,你可以在 errCode
参数中查看返回的错误信息。 该回调方便推流用户了解当前的推流状态;推流出错时,你可以通过返回的错误码了解出错的原因,方便排查问题。
void io.agora.rtc.IRtcEngineEventHandler.onStreamPublished | ( | String | url, |
int | error | ||
) |
开启旁路推流的结果回调。
onRtmpStreamingStateChanged
。该回调返回 addPublishStreamUrl
方法的调用结果。用于通知主播是否推流成功。如果不成功,你可以在 error
参数中查看详细的错误信息。
url | 新增的推流地址 |
error | 详细的错误信息:
|
void io.agora.rtc.IRtcEngineEventHandler.onStreamUnpublished | ( | String | url | ) |
停止旁路推流的结果回调。
onRtmpStreamingStateChanged
。该回调返回 removePublishStreamUrl
方法的调用结果。用于通知主播是否停止推流成功。
url | 主播停止推流的地址 |
void io.agora.rtc.IRtcEngineEventHandler.onTranscodingUpdated | ( | ) |
旁路推流设置被更新回调。
setLiveTranscoding
方法中的直播转码参数 LiveTranscoding
更新时, 该回调会被触发, 并向主播报告更新信息。
setLiveTranscoding
方法设置转码参数时,不会触发该回调。 void io.agora.rtc.IRtcEngineEventHandler.onRtmpStreamingEvent | ( | String | url, |
int | error | ||
) |
RTMP/RTMPS 推流事件回调。
url | RTMP/RTMPS 推流 URL。 |
error | RTMP/RTMPS 推流事件码。
|
void io.agora.rtc.IRtcEngineEventHandler.onStreamMessage | ( | int | uid, |
int | streamId, | ||
byte[] | data | ||
) |
void io.agora.rtc.IRtcEngineEventHandler.onStreamMessageError | ( | int | uid, |
int | streamId, | ||
int | error, | ||
int | missed, | ||
int | cached | ||
) |
接收对方数据流消息发生错误的回调。
该回调表示本地用户未收到远端用户调用 sendStreamMessage
方法发送的流消息。
uid | 用户 ID |
streamId | 数据流 ID |
error | 错误代码,详细定义见 Error code |
missed | 丢失的消息数量 |
cached | 数据流中断时,后面缓存的消息数量 |
void io.agora.rtc.IRtcEngineEventHandler.onMediaEngineLoadSuccess | ( | ) |
媒体引擎成功加载的回调。
void io.agora.rtc.IRtcEngineEventHandler.onMediaEngineStartCallSuccess | ( | ) |
媒体引擎成功启动的回调。
void io.agora.rtc.IRtcEngineEventHandler.onNetworkTypeChanged | ( | int | type | ) |
本地网络类型发生改变回调。
本地网络连接类型发生改变时,SDK 会触发该回调,并在回调中明确当前的网络连接类型。 你可以通过该回调获取正在使用的网络类型;当连接中断时,该回调能辨别引起中断的原因是网络切换还是网络条件不好。
type | 网络连接类型:
|
void io.agora.rtc.IRtcEngineEventHandler.onClientRoleChangeFailed | ( | int | reason, |
int | currentRole | ||
) |