原生内核(Android)快速接入

最近更新时间:2026-03-18 16:41:02

我的收藏
本文将介绍如何在 Android 项目中快速集成互动课堂功能。
说明:
阅读本文前,您可以先了解 移动端原生内核与 Web 内核的区别

开发环境要求

在开始之前,请确保您的开发环境满足以下要求:
Android SDK:API 21 及以上 (Android 5.0+)
NDK:27.0.12077973 及以上
Java:Java 11 及以上
Kotlin:支持

快速接入 (Quick Start)

以下步骤将介绍如何快速在项目中跑通互动课堂。完整示例代码可参考 官方 Demo

步骤 1:导入 SDK

1. 在项目根目录的 settings.gradle 中配置 Maven 仓库:
maven { url "https://storage.googleapis.com/download.flutter.io" }
maven { url "https://android.qcloudclass.com/repo" }
2. 在 app 模块的 build.gradle 中添加依赖(请将 ${latest} 替换为 Demo 中的最新版本号):
android {
compileSdk = 35 // 确保 compileSdk 满足要求
}

dependencies {
implementation("com.qcloudclass.tcic_client_module:flutter_release:${latest}")
implementation("com.qcloudclass:tcic:${latest}")
implementation("io.flutter:flutter_embedding_release:1.0.0-18b71d647a292a980abb405ac7d16fe1f0b20434")
}
3. AndroidManifest.xml<application> 标签中添加 tools:replace="android:allowBackup" 解决冲突:
<application
android:allowBackup="true"
tools:replace="android:allowBackup"
... >

步骤 2:配置权限

AndroidManifest.xml 中声明必要的硬件和网络权限:
<!-- 网络与状态 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 音视频与蓝牙 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<!-- 存储 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
注意:
Android 6.0 以上系统,麦克风、相机、存储等敏感权限需在代码中动态申请

步骤 3:初始化 SDK

在应用启动或首次进入相关页面时进行初始化(只需调用一次):
// Java / Kotlin
TCICManager.initialize(context);

步骤 4:设置全局回调监听 (Kotlin 示例)

通过设置回调,您可以监听用户进出房间、收到消息等事件:
TCICManager.setCallback(object : TCICManager.TCICCallback {
override fun onJoinedClassSuccess() {
runOnUiThread { Toast.makeText(ctx, "加入课堂成功", Toast.LENGTH_SHORT).show() }
}

override fun afterExitedClass() {
runOnUiThread {
Toast.makeText(ctx, "已退出课堂", Toast.LENGTH_SHORT).show()
TCICManager.closeTCICActivity() // 关闭课堂页面
}
}

override fun onJoinedClassFailed() {
runOnUiThread { TCICManager.closeTCICActivity() }
}

override fun onKickedOffClass() {
runOnUiThread { Toast.makeText(ctx, "被踢出课堂", Toast.LENGTH_SHORT).show() }
}

override fun onMemberJoinedClass(data: Map<*, *>) { /* 成员加入 */ }
override fun onMemberLeaveClass(data: Map<*, *>) { /* 成员离开 */ }
override fun onRecivedMessage(message: Map<*, *>) { /* 收到消息 */ }
override fun onError(errorCode: String, errorMsg: String) { /* 错误处理 */ }
})

步骤 5:进入课堂页面 (Jetpack Compose 示例)

通过 接入准备 拿到关键参数,配置 TCICConfig 并进入课堂:
@Composable
fun EnterClassRoomButton(context: Context) {
Button(onClick = {
// 1. 填入从后台获取的参数
val token = "your_token"
val classId = "your_class_id"
val userId = "your_user_id"
val role = 1 // 角色:0学生, 1老师, 3助教, 4巡课
// 2. 设置配置
val config = TCICConfig(token, classId, userId, role)
TCICManager.setConfig(config)
// 3. 跳转到课堂页面
context.startActivity(TCICManager.getTCICIntent(context))
}) {
Text(text = "点击进入课堂")
}
}