注意:说明:
注意:阅读这篇前,你可以先了解 移动端原生内核与 Web 内核的区别。
一、开发环境要求
在开始集成前,请确保你的开发环境满足以下要求:
·开发工具:Android Studio 3.0 或更高版本。
·系统版本:Android 6.0(API Level 23)及以上。
三、步骤 1:导入 SDK
LCIC SDK 已发布至 Maven Central,建议通过 Gradle 进行远程集成。
请在应用模块(Module)的 build.gradle 文件中进行如下配置。
四、1. 添加依赖
在 dependencies 闭包中添加 SDK 依赖:
dependencies { // LCICSDK 组件 implementation 'com.tencent.edu:TCICSDK:1.8.32' }
五、2. 配置 CPU 架构
在 defaultConfig 闭包中指定支持的架构。
注意:说明:
注意:目前 SDK 支持 armeabi-v7a 和 arm64-v8a。你可以根据业务需求灵活配置,支持的架构越多,安装包体积越大。
defaultConfig { ndk { abiFilters "armeabi-v7a", "arm64-v8a" }}
六、3. 配置 Java 编译版本
在 compileOptions 闭包中,设置 JDK 版本为1.8:
compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8}
七、4. 适配高版本 AGP
如果你的 Android Gradle Plugin (AGP) 版本大于4.2.0,请在 android 闭包中添加以下配置以避免打包错误:
android { packagingOptions { jniLibs { useLegacyPackaging true } }}
八、5. 同步项目
配置完成后,单击 Android Studio 右上角的 Sync Now,等待 SDK 下载并集成完成。
九、步骤 2:配置清单文件
在 AndroidManifest.xml 中声明 SDK 所需的权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><application … <!– 注意:当 minSdkVersion ≥ 23 时,必须添加此属性 –> android:extractNativeLibs="true"> …</application>
十、步骤 3:配置混淆规则(可选)
如果你开启了代码混淆,请在 proguard-rules.pro 文件中添加以下规则,防止 LCIC SDK 核心类被混淆:
-keep class com.tencent.** { *; }
十一、步骤 4:申请 SDK 授权 (License)
App 开发需要获取以下两种 License:
十二、1. Web 引擎 License
·测试环境:请参考 申请 Web 引擎测试用 License,完成流程至第四部分获取 LicenseKey 即可。
·正式环境:购买旗舰版后,请通过 联系我们 加入微信群联系技术支持申请正式版 License。
十三、2. 播放器授权(仅“直播大班课”需要)
如果是“直播大班课”班型,需申请播放器权限。请按以下模板填写信息并提交 腾讯云工单,相关疑问可通过 联系我们 加入微信群了解。
注意:一个旗舰版仅支持授权一个正式包名,请确认信息无误。
| 参考模板提供信息:问题:实时互动-教育版申请播放器授权公司名称:联系方式:App Name:Package Name (Android):Bundle ID (iOS): |
十四、步骤 5:初始化 Web 引擎
Web 引擎相较于系统 WebView 具有更好的兼容性和速度。
十五、1. 隐私合规检查
请务必在用户同意隐私政策协议之后,再调用初始化方法,以免违规收集个人信息导致应用上架失败。
十六、2. 执行初始化
初始化代码必须在主进程中执行,且只需调用一次。
// 判断是否为主进程if (TCICInitProvider.isMainProcess(context)) { // 初始化 Web 引擎 // licenseKey 获取方式请参考步骤 4 TCICManager.getInstance().initX5Core(licenseKey, new TBSSdkManageCallback() { @Override public void onCoreInitFinished() { // 内核初始化结束回调 } @Override public void onViewInitFinished(boolean isX5Core) { // Web 引擎初始化完成,此时可以进入课堂 Log.i("LCIC", "Web Engine Init Finished. Is X5 Core: " + isX5Core); } });}
十七、步骤 6:构建进房参数
请按照文档 接入准备 获取必要参数。
进入课堂需要构建 TCICClassConfig 对象。请通过以下方式获取所需参数:
十八、参数详情表
| 字段 | 类型 | 必填 | 含义 | 备注 |
| schoolid | int | 是 | 应用 ID | 在 接入准备 中创建的应用 ID (SdkAppId)。 |
| userid | long | 是 | 课堂 ID | 通过 RegisterUser 接口获取。 |
| token | string | 是 | 用户 ID | 通过 LoginUser 接口获取。 |
| classid | string | 是 | 鉴权 Token | 通过 CreateRoom 接口获取。 |
| region | string | 否 | 服务器地域 | 默认值 cn,即访问中国大陆服务器节点. 支持值:cn:中国大陆。国内用户或全球不确定位置用户。sg:新加坡。全球非中国大陆用户。 |
| scene | string | 否 | 场景名称 | 用于区分不同的定制布局,有两种配置方式:方式1:使用 SetAppCustomContent 接口配置。方式2:控制台 场景配置。 |
| lng | string | 否 | 语言参数 | 界面语言设置。支持值:zh-CN:中文简体zh-TW:中文繁体en-US:英语ja:日语ko:韩语ar:阿拉伯语vi:越南语id:印尼语需配合 TCICWebViewManager.getInstance().setClassLanguage 使用。 |
| camera | int | 否 | 开启摄像头 | 1:开启 (默认),0:关闭。 |
| mic | int | 否 | 开启麦克风 | 1:开启 (默认),0:关闭。 |
| speaker | int | 否 | 开启扬声器 | 1:开启 (默认),0:关闭。 |
| groupLiveCode | string | 否 | 分组直播码 | 详见 分组直播。 |
十九、步骤 7:调起课堂页面
使用配置好的参数启动 TCICClassActivity 即可进入课堂。
// 1. 构建配置对象TCICClassConfig initConfig = new TCICClassConfig.Builder() .schoolId(schoolId) // 应用 ID .classId(classId) // 课堂 ID .userId(userId) // 用户 ID .token(token) // 鉴权 Token .build();// 2. 启动课堂 ActivityIntent intent = new Intent(getActivity(), TCICClassActivity.class);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);Bundle bundle = new Bundle();bundle.putParcelable(TCICConstants.KEY_INIT_CONFIG, initConfig);intent.putExtras(bundle);startActivity(intent);
20、监听退出课堂
如果你需要感知用户退出课堂的事件,可以注册本地广播接收器:
IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(TCICConstants.ON_CLASS_EXITED_ACTION);LocalBroadcastManager.getInstance(context).registerReceiver(broadcastReceiver, intentFilter);
21、推荐与资源
·异常监控:建议接入 腾讯 Bugly 以快速发现并解决线上异常,提升用户体验。
·示例代码:请参考 Android 开发 Demo。
·进阶功能:如需定制界面,请参考 Web 内核定制指南。