开发环境要求
Android Studio 3.0+
Android 6.0(23)及以上系统
前提条件
操作步骤
步骤一:创建新的应用
1. 登录 实时互动-教育版 控制台,进入左侧导航栏的概览,选择新建应用。
2. 若尚未创建应用,则默认进入“创建应用”界面,输入应用名称,例如 TestLCIC。

若您已创建应用,可前往应用管理中,选择使用已有应用即可。

步骤二:获取 SDKAppId 和密钥(SecretKey)
1. 进入应用管理 > 应用配置,获取 SDKAppId 。
2. 进入 访问管理(CAM)控制台 获取密钥,若无密钥,需要在 API 密钥管理中进行新建,具体可参见 访问密钥管理 。


步骤三:导入 SDK
Gradle 工程 SDK 远程构建
LCIC SDK 已经发布到 Maven Central 库,您可以通过配置 Gradle 自动下载更新。
1. 应用模块的 build.gradle 中,在 dependencies 中添加 LCIC SDK 的依赖。
dependencies {// LCICSDK 组件implementation 'com.tencent.edu:TCICSDK:1.8.21'}
2. 在 defaultConfig 中,指定 App 使用的 CPU 架构。
defaultConfig {ndk{abiFilters "armeabi-v7a","arm64-v8a"}}
说明:
目前 LCIC SDK 支持 armeabi-v7a 和 arm64-v8a,能够根据业务需求进行灵活配置。支持不同架构时,包体大小可能会有所不同。
3. 在 compileOptions 中,使用 JDK 1.8 编译。
compileOptions {sourceCompatibility 1.8targetCompatibility 1.8}
4. 如果 AGP 大于4.2.0,需要在应用模块的 build.gradle 中,配置以下内容:
android {packagingOptions {jniLibs {useLegacyPackaging true}}}
5. 单击 Sync Now,自动下载 SDK 并集成到工程里。
步骤四:配置清单文件
在 AndroidManifest.xml 中配置 App 的权限,LCIC 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" />
注意:
当 minSdkVersion ≥ 23时,在 AndroidManifest.xml 中 application 添加
android:extractNativeLibs="true" 参数。步骤五:设置混淆规则(可选)
如设置了混淆,需在 proguard-rules.pro 文件,将 LCIC SDK 相关类加入不混淆名单:
-keep class com.tencent.** { *; }
步骤六:SDK 授权申请
注意:
一个旗舰版仅支持授权一个正式包名,请确认无误后发送相关信息。
包名用于 X5 内核以及快直播播放器签名授权,请提供所需授权的正式应用的 App Name、Package Name 和 Bundle ID 信息。
分类 | 说明 |
问题标题 | 实时互动-教育版 Android SDK 授权申请 |
问题主要内容 | 公司名称。如,xxx 有限公司。 |
| 个人姓名 |
| 联系方式 |
| App Name |
| Package Name (Android) |
| Bundle ID (iOS) |
步骤七:初始化 X5 内核
X5 内核相对于系统 WebView,具有兼容性更好,速度更快等优势。Android 实时互动-教育版 SDK 的组件实现依赖于 X5 内核的 WebView。现提供 X5 内核静态集成方式,能提升 X5 内核加载成功率且无需进程重启即可生效。
1. 检查同意隐私政策协议。
注意:
建议在同意隐私政策协议之后,再调用初始化 X5 内核的方法,以免上架应用时出现未经用户同意收集个人信息的情况。
2. 初始化 X5 内核。
进入课堂前,必须先判断 X5 内核是否初始化完成,且初始化方法必须在主进程中执行(SDK 提供了 TCICInitProvider.isMainProcess(context) 方法判断当前是否处于主进程)。
onViewInitFinished 方法已经回调,初始化不允许重复调用,仅初始化1次即可。
if (TCICInitProvider.isMainProcess(context)) {//初始化X5内核TCICManager.getInstance().initX5Core(licenseKey, new TBSSdkManageCallback() {@Overridepublic void onCoreInitFinished() {}@Overridepublic void onViewInitFinished(boolean isX5Core) {//X5内核初始化完成,可以进课堂}});}
注意:
TCICManager.getInstance().initX5Core(licenseKey); 中的 licenseKey 参数需要通过 步骤六 提交工单联系我们获取 X5 内核的 licenseKey。
步骤八:获取进入课堂所需参数
TCICClassConfig 参数解释
2. 通过云 API 接口 CreateRoom 创建课堂,可以获取到课堂号(classId)信息。
3. 通过调用云 API 接口 RegisterUser 注册用户,可以获取到对应的用户 ID(userId)信息。
4. 通过云 API 接口 LoginUser 登录,可以获取到用户鉴权 token 信息。
5. scene、lng、camera、mic、speaker为非必要参数,如果不设置则使用的是默认值。
字段 | 类型 | 必填 | 含义 | 备注 |
schoolId | int | 是 | 学校编号 | |
classId | long | 是 | 课堂编号 | |
userId | string | 是 | 用户账号 | |
token | string | 是 | 后台鉴权参数 | |
scene | string | 否 | 场景名称 | |
lng | string | 否 | 语言参数 | 当前支持中文(简体)、中文(繁体) 、English、韩语、日语、阿拉伯语、越南语、印尼语。可拼接相应参数,展示对应语种。参数:zh-CN、zh-TW、en-US、ka、ja、ar、vi、id。 同时需要设置:TCICWebViewManager.getInstance().setClassLanguage(this, env, lng); lng参数。 |
camera | int | 否 | 初始化开启摄像头 | 1为开启摄像头,0为关闭摄像头,默认 1。 |
mic | int | 否 | 初始化开启麦克风 | 1为开启麦克风,0为关闭麦克风,默认 1。 |
speaker | int | 否 | 初始化开启扬声器 | 1为开启扬声器,0为关闭扬声器,默认 1。 |
步骤九:调起组件主页面
只需传递 4 个参数就可调起 LCIC 组件主页面,分别为学校编号、课堂编号、用户账号和 token。
说明:
Intent intent = new Intent(getActivity(), TCICClassActivity.class);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);Bundle bundle = new Bundle();TCICClassConfig initConfig = new TCICClassConfig.Builder().schoolId(schoolId).classId(classId).userId(userId).token(token).build();bundle.putParcelable(TCICConstants.KEY_INIT_CONFIG, initConfig);intent.putExtras(bundle);startActivity(intent);
如果您需要监听退出课堂通知,可以通过注册 TCICConstants.ON_CLASS_EXITED_ACTION 的本地广播,参见如下代码:
IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(TCICConstants.ON_CLASS_EXITED_ACTION);LocalBroadcastManager.getInstance(context).registerReceiver(broadcastReceiver, intentFilter);
其它文档
我们建议您在使用 LCIC SDK 时,同时也接入腾讯 Bugly,帮助您快速发现并解决异常,同时掌握产品运营动态,及时跟进用户反馈。 接入指南参见 腾讯 Bugly 官网。
参见 开发 Demo。
自定义页面