io.agora.rtc.AgoraRtcConn类 参考

  • Java

更新时间不可用

AgoraRtcConn 类,用于管理 SDK 与 RTC 频道之间的连接。

连接完成之后,你可以通过 AgoraLocalUser 对象在 RTC 频道中发送和接收媒体流。

连接频道是异步操作,你可以通过 IRtcConnObserver 对象监听连接状态变化和事件。 AgoraRtcConn 还可以监控频道中的远端用户是否加入或离开频道。

构造及析构函数说明

AgoraRtcConn()

io.agora.rtc.AgoraRtcConn.AgoraRtcConn(long cptr)

构造函数。

成员函数说明

connect()

native int io.agora.rtc.AgoraRtcConn.connect(String token, String chan_id, String user_id)

连接 RTC 频道。

方法成功时,连接状态由 CONNECTION_STATE_DISCONNECTED(1) 变更为 CONNECTION_STATE_CONNECTING(2)。

根据连接是否成功,连接状态会变更为 CONNECTION_STATE_CONNECTED(3) 或 CONNECTION_STATE_FAILED(5)。SDK 会触发 onConnected 或 onDisconnected 提醒连接状态变更。

参数
参数名描述
token

RTC token。

chan_id

频道名。必须为字符串且长度不超过 64 字节。支持的字符类型包括:

  • 全部小写字母: a to z
  • 全部大写字母:A to Z
  • 全部阿拉伯数字:0 to 9
  • 空格
  • 标点符号和其他特殊符号: "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ","
user_id

本地用户 ID。长度不超过 64 字节。如果你不设置用户 ID 或设为 null, SDK 在 onConnected 回调中自动返回一个 user ID。你必须自行记录并管理此 ID。根据你在 initialize 方法中选择的用户 ID 类型,该参数支持的字符集也不同:

  • int 型用户 ID 支持的字符集包括:

    • 10 个数字 0-9
  • String 型用户 ID 支持的字符集包括:

    • 26 个小写英文字母 a-z
    • 26 个大写英文字母 A-Z
    • 10 个数字 0-9
    • 空格
    • "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ","
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

createDataStream()

native int io.agora.rtc.AgoraRtcConn.createDataStream(Out stream_id, int reliable, int ordered)

创建数据流。

每个用户在每个频道中最多只能创建 5 个数据流。

注解

  • 声网不支持你将 reliable 设为 1 且 ordered 设为 0。
  • 当需要数据包立刻到达接收端时,不能将 ordered 参数设置为 0。
参数
参数名描述
stream_id

输出参数,数据流 ID。

reliable

该数据流是否可靠:

  • 0: 接收方 5 秒内会收到发送方所发送的数据。
  • 1: 接收方不保证收到,就算数据丢失也不会报错。
ordered

该数据流是否有序:

  • 0: 接收方会按照发送方发送的顺序收到数据包。
  • 1: 接收方不保证按照发送方发送的顺序收到数据包。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

destroy()

void io.agora.rtc.AgoraRtcConn.destroy()

析构函数。

destroyConnInfo()

native void io.agora.rtc.AgoraRtcConn.destroyConnInfo(RtcConnInfo info)

destroyTransportStats()

native void io.agora.rtc.AgoraRtcConn.destroyTransportStats(RtcStats stats)

destroyUserInfo()

native void io.agora.rtc.AgoraRtcConn.destroyUserInfo(UserInfo info)

disconnect()

native int io.agora.rtc.AgoraRtcConn.disconnect()

与 RTC 频道断开连接。

SDK 与频道断开连接时,连接状态变更为 CONNECTION_STATE_DISCONNECTED(1)。你还可以通过 onDisconnected 回调得知。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

enableEncryption()

native int io.agora.rtc.AgoraRtcConn.enableEncryption(int enabled, EncryptionConfig config)

开启或关闭内置加密。

在安全要求较高的场景下,声网建议你在加入频道前,调用本方法开启内置加密。

参数
参数名描述
enabled

是否开启内置加密:

  • true: 开启内置加密。
  • false: 关闭内置加密。
config

配置内置加密模式和密钥。详见 EncryptionConfig。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

getAgoraParameter()

native AgoraParameter io.agora.rtc.AgoraRtcConn.getAgoraParameter()

获取某个 Connection 中的 AgoraParameter 对象。

通过该方法获取的 AgoraParameter 对象,设置仅对当前 Connection 有效。如需进行全局设置,改用 AgoraService.getAgoraParameter 方法。

返回值

  • AgoraParameter 对象:方法调用成功。
  • null:方法调用失败。

getConnId()

native int io.agora.rtc.AgoraRtcConn.getConnId()

获取连接 ID。

返回值

连接 ID。

getConnInfo()

native RtcConnInfo io.agora.rtc.AgoraRtcConn.getConnInfo()

获取连接信息。

返回值

一个 RtcConnInfo 对象。

getLocalUser()

native AgoraLocalUser io.agora.rtc.AgoraRtcConn.getLocalUser()

获取 AgoraLocalUser 对象。

返回值

  • AgoraLocalUser 对象:方法调用成功。
  • 空指针:方法调用失败。

getTransportStats()

native RtcStats io.agora.rtc.AgoraRtcConn.getTransportStats()

获取 RTC 连接的传输状态。

返回值

一个 RtcStats 对象。

getUserInfo()

native UserInfo io.agora.rtc.AgoraRtcConn.getUserInfo(String user_id)

获取频道中指定远端用户的信息。

参数
参数名描述
user_id

用户 ID。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

一个 UserInfo 对象,其中包含某一指定用户的有关信息。

registerNetworkObserver()

native int io.agora.rtc.AgoraRtcConn.registerNetworkObserver(INetworkObserver observer)

注册网络状态 observer。

参数
参数名描述
observer

INetworkObserver 对象。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

registerObserver()

native int io.agora.rtc.AgoraRtcConn.registerObserver(IRtcConnObserver observer)

注册 RTC 连接 observer。你必须先创建 IRtcConnection 对象。

参数
参数名描述
observer

IRtcConnObserver 对象。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

renewToken()

native int io.agora.rtc.AgoraRtcConn.renewToken(String token)

更新 Token。

Token 会在一定时间后过期。 当收到 onTokenPrivilegeWillExpire 回调时,你必须从服务端生成一个新的 token,并使用该方法更新 Token。否则,SDK 会与频道断开连接。

参数
参数名描述
token

新 Token。

表格内容超出当前宽度,可横向滚动查看更多列。

sendCustomReportMessage()

native int io.agora.rtc.AgoraRtcConn.sendCustomReportMessage(String id, String category, String event, String label, int value)

发送自定义上报消息。

参数
参数名描述
id

自定义事件的 ID。

category

自定义事件的类型。

event

需要上报的自定义事件。

label

自定义事件的标签。

value

自定义事件的值。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

sendStreamMessage() [1/2]

native int io.agora.rtc.AgoraRtcConn.sendStreamMessage(int stream_id, String data, int length)

发送数据流消息。

该方法发送数据流消息到频道内所有用户。SDK 对该方法的实现进行了如下限制:

  • 频道内每秒最多能发送 30 个包,且每个包最大为 1 KB。
  • 每个客户端每秒最多能发送 6 KB 数据。
  • 频道内每人最多能同时有 5 个数据通道。

成功调用该方法后,远端会触发 onStreamMessage 回调,远端用户可以在该回调中获取接收到的流消息。

注解

  • 请确保在调用该方法前,已调用 createDataStream 创建了数据通道。
  • 直播场景下,该方法仅适用于主播用户。
参数
参数名描述
stream_id

数据流 ID。可以通过 createDataStream 获取。

data

待发送的数据。

length

数据长度。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

sendStreamMessage() [2/2]

int io.agora.rtc.AgoraRtcConn.sendStreamMessage(int streamId, byte[] messageData)

发送数据流消息。

该方法发送数据流消息到频道内所有用户。SDK 对该方法的实现进行了如下限制:

  • 频道内每秒最多能发送 30 个包,且每个包最大为 1 KB。
  • 每个客户端每秒最多能发送 6 KB 数据。
  • 频道内每人最多能同时有 5 个数据通道。

成功调用该方法后,远端会触发 onStreamMessage 回调,远端用户可以在该回调中获取接收到的流消息。

注解

  • 请确保在调用该方法前,已调用 createDataStream 创建了数据通道。
  • 直播场景下,该方法仅适用于主播用户。
参数
参数名描述
stream_id

数据流 ID。可以通过 createDataStream 获取。

messageData

待发送的数据。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

startLastmileProbeTest()

native int io.agora.rtc.AgoraRtcConn.startLastmileProbeTest(LastmileProbeConfig config)

开始通话前网络质量探测。

开始通话前网络质量探测,向用户反馈上下行网络的带宽、丢包、网络抖动和往返时延数据。

启用该方法后,SDK 会依次返回如下 2 个回调:

  • onLastmileQuality: 视网络情况约 2 秒内返回。该回调通过打分反馈上下行网络质量,更贴近用户的主观感受。
  • onLastmileProbeResult: 视网络情况约 30 秒内返回。该回调通过具体数据反馈上下行网络质量,更加客观。

注解

  • 调用该方法后,在收到 onLastmileQuality 和 onLastmileProbeResult 回调之前请不要调用其他方法,否则可能会由于 API 操作过于频繁导致此方法无法执行。
  • 在直播场景中,如果本地用户为主播,请勿加入频道后调用该方法。
参数
参数名描述
config

Last mile 网络探测配置,详见 See LastmileProbeConfig。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

stopLastmileProbeTest()

native int io.agora.rtc.AgoraRtcConn.stopLastmileProbeTest()

停止通话前网络质量探测。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

unregisterNetworkObserver()

native int io.agora.rtc.AgoraRtcConn.unregisterNetworkObserver()

释放 INetworkObserver 对象。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

unregisterObserver()

native int io.agora.rtc.AgoraRtcConn.unregisterObserver()

释放 IRtcConnObserver 对象。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

该类的文档由以下文件生成:

  • AgoraRtcConn.java