主要功能

频道管理

方法 描述
createTangRTCEngine 创建并初始化 RtcEngine。
destoryTangRTCEngine 销毁 RtcEngine 对象。
joinChannel 加入频道。
leaveChannel 离开频道。

createTangRTCEngine

创建并初始化 RtcEngine。

public static TangRTCEngineManager createTangRTCEngine( Context context,String appId, ITangRTCEngineCallBack callBack) {}

TangRTCEngineManager 类的所有接口函数,如无特殊说明,都是异步调用,对接口的调用建议在同一个线程进行。

注意:

请确保在调用其他 API 前先调用该方法创建并初始化 TangRTCEngineManager。 SDK 只支持每个 app 创建一个 TangRTCEngineManager 实例。

参数 描述
context 安卓活动上下文。
appId 为 app 开发者签发的 App ID。 使用同一个 App ID 的 app 才能进入同一个频道进行拉流。一个 App ID 只能用于创建一个 TangRTCEngineManager。如需更换 App ID,必须先调用 destoryTangRTCEngine 销毁当前 TangRTCEngineManager 再重新创建。
callBack TangRTCEngineManager 的事件句柄,详见 ITangRTCEngineCallBack。
返回值 描述
TangRTCEngineManager对象 方法调用成功,返回一个 TangRTCEngineManager 对象。
errCode 方法调用失败,返回错误码。

destoryTangRTCEngine

销毁 TangRTCEngineManager 对象。

public static synchronized void destroy() {}

该方法释放 TangRTC SDK 使用的所有资源。有些 app 只在用户需要时才进行实时音视频通信,不需要时则将资源释放出来用于其他操作, 该方法适用于此类情况。

调用该方法后,你将无法再使用 SDK 的其它方法和回调。如需再次使用实时音视频通信功能,你必须依次重新调用createTangRTCEngine 方法创建一个新的 TangRTCEngineManager 对象。

注意:如需在销毁后再次创建 TangRTCEngineManager 对象,需要等待 destoryTangRTCEngine 方法执行结束后再创建实例。

joinChannel

加入频道

public abstract int joinChannel( String token, String channelId, int uid, ChannelMediaOptions options);

该方法让用户加入直播频道,在同一个频道内的用户可以拉取主播的音视频流。

成功调用该方法加入频道后会触发以下回调:

本地会触发 onJoinChannelSuccess 和 onConnectionStateChanged 回调。

在网络状况不理想的情况下,客户端可能会与全时服务器失去连接;SDK 会自动尝试重连,重连成功后,本地会触发 onRejoinChannelSuccess 回调。

该方法有一个 options 参数,用于配置用户加入频道时是否自动订阅频道内所有远端音视频流。默认情况下,用户订阅频道内所有其他用户的音频流和视频流,因此会产生用量并影响计费。如果想取消订阅,可以通过设置 options 参数或相应的 mute 方法实现。 注意:

该方法允许用户一次加入仅一个频道。

参数 描述
token 在服务端生成的用于鉴权的动态密钥。(预留)
channelId 频道名。该参数标识用户进行实时音视频互动的频道。
uid 用户ID。(预留)
options 频道媒体设置选项。详见 ChannelMediaOptions。(预留)
返回值 描述
0 方法调用成功。
-1 传入的参数无效。例如,使用了不合法的 Token,uid 参数未设置为整型,ChannelMediaOptions 结构体成员值不合法。你需要填入有效的参数,重新加入频道。
-2 RtcEngine 对象初始化失败。你需要重新初始化 RtcEngine 对象。
-3 RtcEngine 对象尚未初始化。你需要在调用该方法前成功初始化 RtcEngine 对象。
-4 加入频道被拒绝。可能的原因是用户已经在频道中。我们推荐通过 onConnectionStateChanged 回调判断用户是否在频道中。除收到 CONNECTION_STATE_DISCONNECTED(1) 状态外,不要再次调用该方法加入频道。
-5 频道名无效。你需要在 channelId 中填入有效的频道名,重新加入频道。

leaveChannel

离开频道

public abstract int leaveChannel();

该方法会把会话相关的所有资源释放掉。

该方法是异步操作,调用返回时并没有真正退出频道。

成功加入频道后,必须调用本方法结束通话,否则无法开始下一次通话。

成功调用该方法、并且离开频道后会触发以下回调:

本地:onLeaveChannel 回调。

注意:如果你调用了本方法后立即调用 destoryTangRTCEngine 方法,SDK 将无法触发 onLeaveChannel 回调。

返回值 描述
0 方法调用成功。
-1 一般性的错误(未明确归类)
-2 RtcEngine 对象尚未初始化。你需要在调用该方法前成功初始化 RtcEngine 对象。

 

频道事件

方法 描述
onJoinChannelSuccess 成功加入频道回调。
onRejoinChannelSuccess 成功重新加入频道回调。
onJoinChannelFailed 加入频道失败回调。
onLeaveChannel 离开频道回调。
onConnectionStateChanged 连接状态已改变回调。
onFirstFrameNotify 视频数据首帧回调。

onJoinChannelSuccess

成功加入频道回调。

public void onJoinChannelSuccess(String channel, int uid, int elapsed) {}

该回调方法表示该客户端成功加入了指定的频道。

参数 描述
channel 频道名。
uid 加入频道的用户 ID。(预留)
elapsed 从本地调用 joinChannel 开始到发生此事件过去的时间(毫秒)。(预留)

onRejoinChannelSuccess

成功重新加入频道回调。

public void onRejoinChannelSuccess(String channel, int uid, int elapsed) {}

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

参数 描述
channel 频道名。
uid 加入频道的用户 ID。(预留)
elapsed 从本地调用 joinChannel 开始到发生此事件过去的时间(毫秒)。(预留)

onJoinChannelFailed

加入频道失败回调。

public void onJoinChannelFailed(String channel, int err, String msg) {}

该回调方法表示该客户端加入指定的频道失败了。

参数 描述
err 失败类型 ERROR_CODE_TYPE。
REMOTE_CANDIDATE_NOT_READY = -1,//!< 远端candidate没有准备好
PEER_CONNECTION_NOT_READY = -2, //!< PeerConnection初始化失败
RECONNECT_SAME_PEER = -3, //!< 重复连接同一个peer
PULLURL_NOT_READY = -4, //!< pull url没有准备好,应用端传进来的
REMOTE_SDP_NOT_READY = -5, //!< 远端sdp没有准备好
LOCAL_SDP_NOT_READY = -6, //!< 本地sdp没有准备好
ICE_CONNECTION_FAILED = -7, //!< ICE 连接失败
msg 失败消息。

onLeaveChannel

离开频道回调。

public void onLeaveChannel(RtcStats stats) {}

App 调用 leaveChannel 方法时,SDK 提示 app 离开频道成功。在该回调方法中,app 可以得到此次通话的总通话时长、SDK 收发数据的流量等信息。

参数 描述
stats 通话的统计数据: RtcStats。(预留,暂未实现)

onConnectionStateChanged

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

public void onConnectionStateChanged(CONNECTION_STATE_TYPE state, CONNECTION_CHANGED_REASON_TYPE reason) {}

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

参数 描述
state 当前网络连接状态。(参考CONNECTION_STATE_TYPE )
CONNECTION_STATE_DISCONNECTED (1):网络连接断开。
CONNECTION_STATE_CONNECTING (2):建立网络连接中。
CONNECTION_STATE_CONNECTED (3):网络已连接。
CONNECTION_STATE_RECONNECTING (4):重新建立网络连接中 。
CONNECTION_STATE_FAILED (5):网络连接失败 。
reason 引起网络状态改变的原因。(参考CONNECTION_CHANGED_REASON_TYPE )
CONNECTION_CHANGED_CONNECTING (0):建立网络连接中 。
CONNECTION_CHANGED_JOIN_SUCCESS (1):成功加入频道 。
CONNECTION_CHANGED_INTERRUPTED (2):网络连接中断 。
CONNECTION_CHANGED_JOIN_FAILED (3):加入频道失败 。
CONNECTION_CHANGED_LEAVE_CHANNEL (4):离开频道 。
CONNECTION_CHANGED_INVALID_CHANNEL_NAME (5):不是有效的频道名。请更换有效的频道名重新加入频道。
CONNECTION_CHANGED_REJOIN_SUCCESS (6):重新加入频道成功。
CONNECTION_CHANGED_LOST (7):SDK 和服务器失去连接 。

onFirstFrameNotify

视频首帧通知

public void onFirstFrameNotify(String channel){}

收到远端视频数据的时候,首帧通过回调的方式通知给上层

参数 描述
channel 频道名。

 

音频管理

方法 描述
muteAllRemoteAudioStreams 取消或恢复订阅所有远端用户的音频流。

muteAllRemoteAudioStreams

取消或恢复订阅所有远端用户的音频流。

public abstract int muteAllRemoteAudioStreams(boolean muted);

成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的音频流,包括在调用该方法后加入频道的用户的音频流。

注意:

该方法需要在加入频道后调用。 如果需要在加入频道前设置默认不订阅远端用户音频流,可以在调用 joinChannel 加入频道时设置 autoSubscribeAudio 为 false。

参数 描述
muted 是否取消订阅所有远端用户的音频流:true: 取消订阅所有远端用户的音频流。false:(默认)订阅所有远端用户的音频流。
返回值 描述
0 方法调用成功。
<0 方法调用失败

视频管理

方法 描述
setupRemoteVideo 初始化远端用户视图。
muteAllRemoteVideoStreams 取消或恢复订阅所有远端用户的视频流。

setupRemoteVideo

初始化远端用户视图。

public abstract int setupRemoteVideo(VideoCanvas remote);

该方法绑定远端用户和显示视图,并设置远端用户视图在本地显示时的渲染模式和镜像模式,只影响本地用户看到的视频画面。

如需解除某个远端用户的绑定视图,可以调用该方法并将 view 设置为空。

离开频道后,SDK 会清除远端用户视图的绑定关系。

参数 描述
remote 远端视频显示属性。详见 VideoCanvas。
public class TangRTCVideoCanvas {
    public TangGLSurfaceView surfaceView = null; //窗口的view
    public String channelId = null; //频道ID
    public long uId = 0L; //用户ID(预留)
    public RENDER_MODE_TYPE renderMode; //渲染模式(预留)
    public VIDEO_MIRROR_MODE_TYPE mirrorMode;//镜像模式(预留)

    public TangRTCVideoCanvas() {
        this.renderMode = RENDER_MODE_TYPE.RENDER_MODE_HIDDEN;
        this.mirrorMode = VIDEO_MIRROR_MODE_TYPE.VIDEO_MIRROR_MODE_AUTO;
}
返回值 描述
0 方法调用成功。
<0 方法调用失败

muteAllRemoteVideoStreams

取消或恢复订阅所有远端用户的视频流。

public abstract int muteAllRemoteVideoStreams(boolean muted);

成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的视频流,包括在调用该方法后加入频道的用户的视频流。

注意:

该方法需要在加入频道后调用。 如果需要在加入频道前设置默认不订阅远端用户视频流,可以在调用 joinChannel 加入频道时设置 autoSubscribeVideo 为 false。

参数 描述
muted 是否取消订阅所有远端用户的视频流。true: 取消订阅所有用户的视频流。false:(默认)订阅所有用户的视频流。
返回值 描述
0 方法调用成功。
<0 方法调用失败