跳到主要内容

Android 集成

环境与依赖​

Android API 24+,compileSdk 35,JDK 17。依赖的 DrawsKit 0.1.2 AAR 仅包含 arm64-v8a,运行课堂示例需使用 arm64 真机或模拟器。

// settings.gradle.kts 的仓库配置
repositories {
google()
mavenCentral()
}
// app/build.gradle.kts
dependencies {
implementation("com.eduskit:edusdk-ui:0.1.1")
}

只做自绘 UI 时把依赖改为 com.eduskit:edusdk:0.1.1。Maven group 是 com.eduskit,代码命名空间是 com.edukits.edusdk。内置 Adapter 的 IM、RTC、白板依赖由包传递引入。

Kotlin:打开课堂页​

以下代码在 Activity 中调用,变量来自业务后端:

import com.edukits.edusdk.ui.EduClassroomActivity
import com.edukits.edusdk.ui.EduClassroomOptions

val options = EduClassroomOptions(
appId = appId,
backendUrl = backendUrl,
classroomId = classroomId,
userId = eduUserId,
displayName = displayName,
userToken = accessToken,
)
EduClassroomActivity.start(this, options)

Java:打开课堂页​

import com.edukits.edusdk.ui.EduClassroomLauncher;
import com.edukits.edusdk.ui.EduClassroomOptions;
import com.edukits.edusdk.ui.EduThemeMode;

EduClassroomOptions options = new EduClassroomOptions(
appId, backendUrl, classroomId, eduUserId, displayName,
accessToken, "student-demo", EduThemeMode.System, null
);
EduClassroomLauncher.launch(this, options);

Java 需要填写 Kotlin 构造器的全部参数。student-demo 对应 inviteDemoUserId 演示选项,不会创建或添加实际成员。业务成员由服务端管理。

可在首页首次可见后调用 EduClassroom.preload(context),Java 用 EduClassroomLauncher.preload(context)。预热不登录、不进课;不要在 Application.onCreate 同步执行。

Headless​

import com.edukits.edusdk.EduSdk
import com.edukits.edusdk.EduSdkCreateOptions
import com.edukits.edusdk.EnterClassroomParams

val sdk = EduSdk.create(this, EduSdkCreateOptions(
appId = appId,
backendUrl = backendUrl,
userToken = accessToken,
))
sdk.addClassInfoChangedListener { info -> /* render info */ }
sdk.addJoinProgressListener { progress -> /* render progress */ }
sdk.addErrorListener { error -> /* show error */ }
sdk.initialize()
sdk.enterClassroom(EnterClassroomParams(
classroomId = classroomId,
userId = eduUserId,
displayName = displayName,
))

SDK 方法受理后,进课结果通过回调报告。自绘界面需要持有 SDK 实例,退出课堂时调用 sdk.leaveClassroom(),页面不再使用时调用 sdk.destroy();UI Kit 自行管理其内部实例。监听器返回取消函数,可在页面切换时取消订阅。

权限与验证​

在宿主声明并申请摄像头和录音权限,见宿主权限与网络。系统授权与课堂权限分别检查。大部分回调在主线程触发;过程笔迹 onWhiteboardLiveStrokeReceived 在 SDK 事件线程触发,直接绘制 UI 前需切回主线程。

源码示例是 examples/android-kotlin 和 examples/android-java。在 edu-sdks 根目录运行 make dev-android 可刷新 native 库并构建示例。生成的 Kotlin 绑定与 .so 需要匹配,不能混用不同构建的产物。