背景说明
AllInOneRTCEngine 适配了声网和腾讯两套 SDK,方便您同时集成声网和腾讯的服务,接口完全采用声网的接口调用及回调方式,仅需修改初始化逻辑,即可快速切换 SDK。当前适配版本:
声网 RtcEngine:4.3.0
腾讯 TRTCCloud:11.7.0.13946
准备工作
最低兼容 Android 4.1(SDK API Level 19),建议使用 Android 5.0 (SDK API Level 21)及以上版本。
Android Studio 3.5 及以上版本。
App 要求 Android 4.1 及以上设备。
开通服务
开通 TRTC 服务步骤如下:
1. 进入 TRTC 控制台,如果没有创建应用,请先创建应用。
2. 进入应用概览,记录
SDKAppID
和SDKSecretKey
。
调试指引
导入并依赖 AllInOneRTCEngine 模块
导入 AllInOneRTCEngine 模块,以及 TRTC SDK(版本11.7.0.13946)和 Agora SDK(版本:4.3.0),在 app 模块下的
build.gradle
文件中输入以下代码:dependencies {....// 依赖 AllInOneRTCEngine 模块(版本:1.0.0)。implementation 'com.tencent.liteav:allinone-rtc-engine:latest.release'// 依赖 TRTC SDK(版本:11.7.0.13946)。implementation 'com.tencent.liteav:LiteAVSDK_TRTC:11.7.0.13946'// 依赖 Agora SDK(版本:4.3.0)。implementation 'io.agora.rtc:full-sdk:4.3.0'}
成功依赖 "AllInOneRTCEngine" 模块、TRTC SDK、Agora SDK。
初始化引擎
1. 导入 AllInOneRTCEngine 包名。
import com.tencent.rtc.aio.AIORTCEngine; import com.tencent.rtc.aio.RTCEngineManager;
2. 将 SDK 由类型 RtcEngine 改为类型 AIORTCEngine 。
// 修改前private RtcEngine mEngine;// 修改后private AIORTCEngine mEngine;
3. 调用以下接口创建 AllInOneRTCEngine 实例,通过 参数enableTRTC 切换SDK。
RTCEngineManager.create(Context context, String appId, IRtcEngineEventHandler listener, boolean enableTRTC)
参数:
参数名 | 含义 |
context | 应用程序的环境信息,上下文。 |
appId | 根据您想创建的 SDK 实例,输入对应 Agora 或 TRTC 的 appId。 |
listener | |
enableTRTC | true:创建的 SDK 实例为 TRTCCloud 类型。false:创建的 SDK 实例为 RtcEngine。 |
假设您创建的 SDK 实例变量名为 mEngine,切换到 TRTC SDK 的示例代码如下:
// 事件回调监听static class TRTCCloudListenerImpl extends IRtcEngineEventHandler {}mTRTCListener = new TRTCCloudListenerImpl();// 创建 TRTC SDK 实例: mEngine = RTCEngineManager.create(this, appId, mTRTCListener, true);
加入频道
调用以下接口加入频道:
// 加入频道接口joinChannel(String token, String channelId, String optionalInfo, int uid);
参数:
参数名 | 含义 | 使用 TRTC | 使用 Agora |
token | 进房鉴权票据 | ||
channelId | 房间号 | 字符串类型的房间号 | 字符串类型的房间号 |
uid | 用户 ID | 数字类型用户名 | 数字类型用户名 |
结束互动
1. 调用以下接口离开频道:
leaveChannel();
2. 调用以下接口销毁 SDK 实例:
RTCEngineManager.destroy();
常见问题
RTC 线路如何选择?
当 APP 集成 Agora 和 TRTC 两套 SDK 时,两套 SDK 之间不互通,这里需要一个房间分配策略用于选择使用哪套 SDK ,这里提出两种方式供参考:
按房间号来分配,每次进房需要知道此房间是使用那种类型的 SDK。
按业务来区分,同一种业务全部使用一种类型 SDK。
关于房间号 TRTC 默认使用整型房间号,如果您需要字符串类型房间号,请联系架构师帮您开通。