本文将介绍如何在 Android 项目中快速集成互动课堂功能。
说明:
开发环境要求
在开始之前,请确保您的开发环境满足以下要求:
Android SDK:API 21 及以上 (Android 5.0+)
NDK:27.0.12077973 及以上
Java:Java 11 及以上
Kotlin:支持
快速接入 (Quick Start)
步骤 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" 解决冲突:<applicationandroid: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 示例)
@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 = "点击进入课堂")}}