Skip to main content

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.