这篇会介绍如何在 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:${latest}")}
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 / KotlinTCICManager.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 并进入课堂:
@Composablefun 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 = "点击进入课堂") }}