Android integration
Runtime and dependencies
Android API 24+, compileSdk 35 and JDK 17. The DrawsKit 0.1.2 AAR includes only arm64-v8a; use an arm64 device or emulator for the classroom example.
// Repository configuration in settings.gradle.kts
repositories {
google()
mavenCentral()
}
// app/build.gradle.kts
dependencies {
implementation("com.eduskit:edusdk-ui:0.1.1")
}
For custom UI, use com.eduskit:edusdk:0.1.1. The Maven group is com.eduskit, while the code namespace is com.edukits.edusdk. IM, RTC and whiteboard dependencies are transitive through the bundled adapters.
Kotlin: open a classroom
Call from an Activity with values returned by your backend:
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: open a classroom
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 supplies every Kotlin constructor argument. student-demo is the inviteDemoUserId demo option; it does not create or enroll a real member. Manage membership on the server.
After your home screen becomes visible, optionally call EduClassroom.preload(context) or Java's EduClassroomLauncher.preload(context). Preloading does not log in or enter a classroom. Do not run it synchronously in 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,
))
Entry results arrive through callbacks after commands are accepted. Retain the SDK instance in a custom interface, call sdk.leaveClassroom() to leave, and sdk.destroy() when no longer needed. UI Kit manages its own instance. Listener registration returns an unsubscribe function.
Permissions and checks
Declare and request camera and microphone access in the host; see Host requirements. OS permission and classroom permission are separate. Most callbacks run on the main thread. onWhiteboardLiveStrokeReceived runs on the SDK event thread; dispatch to the main thread before updating UI.
Source examples are examples/android-kotlin and examples/android-java. make dev-android in edu-sdks refreshes native libraries and builds the example. Generated Kotlin bindings and .so libraries must come from matching builds.