集成灵动课堂
本文详细介绍如何将灵动课堂集成到你自己的 Android 项目中。
模块说明
灵动课堂代码包含以下模块:
-
app
:(可选)包括课堂登录界面、Token 生成等,展示了如何调用灵动课堂 API 进入教室房间。此模块在 GitHub 上开源,仅供参考,一般情况下不建议开发者直接使用。注意登录界面的某些规范(比如用户名、房间名的长度和字符限制)不适用于所有 App,开发者要根据自己的应用需求自行定义。
-
AgoraEduUIKit
:(可选)依赖于AgoraEduCore
模块的教室 UI 实现,并展示了如何根据灵动课堂的 API 和数据回调进行 UI 数据的聚合和更新。此模块在 GitHub 上开源。一般情况下开发者可以基于这个模块开发自己的课堂 UI。 -
AgoraClassSDK
:(可选)提供一些常用的方法,如配置 SDK、启动教室、注册 ext app 等功能,同时提供各场景的 Activity 实现。此模块在 GitHub 上开源。开发者可能用到其中的某些功能,建议保留。 -
AgoraEduCore
:(必需)灵动课堂的核心模块。自 2.0.0 版起,此模块闭源,开发者使用远程依赖引入。 -
AgoraCloudScene
:(可选)灵动课堂的云课堂模块,依赖于AgoraEduCore
模块的云课堂 UI 实现。
集成教育场景
如果你使用灵动课堂的默认 UI,无需修改灵动课堂的代码,参考以下步骤通过 Maven 添加远程依赖集成完整的灵动课堂:
-
在项目根目录的
build.gradle
文件中添加以下代码:Groovyrepositories {
maven { url 'https://jitpack.io' }
google()
mavenCentral()
maven { url 'https://s01.oss.sonatype.org/content/repositories/snapshots/' }
} -
在项目根目录的
build.gradle
文件中添加以下依赖,引入AgoraEduUIKit
、AgoraClassSDK
、AgoraEduCore
模块:Groovydependencies {
implementation "io.github.agoraio-community:AgoraEduCore:版本号"
implementation "io.github.agoraio-community:AgoraEduUIKit:版本号"
implementation "io.github.agoraio-community:AgoraClassSDK:版本号"
}如果你想使用 2.7.0 及以下版本,还需要添加以下代码依赖 hyphenate 模块:
Groovyimplementation "io.github.agoraio-community:hyphenate:版本号"
信息点击此处查看灵动课堂最新版本。
-
在 2.8.70 版本以后,需要在 Application 的
onCreate
方法里面,初始化以下代码:KotlinAgoraSDKInitUtils.initSDK(this);
-
调用
AgoraClassroomSDK.launch
方法启动课堂。示例代码如下:Kotlin// 启动教室前,需要动态申请 `Manifest.permission.RECORD_AUDIO` 和 `Manifest.permission.CAMERA` 权限
fun startClassRoom() {
val appId = "" // 填入你的 App ID
val rtmToken = "" // 填入你的 RTM Token
val userName = "" // 填入你的用户名
val roomName = "" // 填入你的房间名
val roomUuid = "" // 填入房间号
val userUuid = "" // 填入用户 ID
val roomType = RoomType.SMALL_CLASS.value // 班型: 0 一对一 2大班课 4小班课
val roleType = AgoraEduRoleType.AgoraEduRoleTypeStudent.value // 角色:1:老师角色 2:学生角色
val roomRegion = AgoraEduRegion.cn // 区域
val duration = 1800L // 课程时长
val config = AgoraEduLaunchConfig(
userName,
userUuid,
roomName,
roomUuid,
roleType,
roomType,
rtmToken,
null,
duration
)
config.appId = appId
config.region = roomRegion
// 设置大窗视频区域参数(大流)
config.videoEncoderConfig = EduContextVideoEncoderConfig(
FcrStreamParameters.HeightStream.width,
FcrStreamParameters.HeightStream.height,
FcrStreamParameters.HeightStream.frameRate,
FcrStreamParameters.HeightStream.bitRate
)
AgoraClassroomSDK.setConfig(AgoraClassSdkConfig(appId))
AgoraClassroomSDK.launch(this, config, AgoraEduLaunchCallback { event ->
Log.e("agora", ":launch-课堂状态:" + event.name)
})
}可以通过设置
FcrStreamParameters
设置大小窗的视频参数,其中- 小流模式:在讲台区的时候,会切换到小流模式,该参数表示讲台区的视频窗的参数。
- 大流模式:在大窗区域的时候,会切换到大流模式,该参数表示大窗上的视频窗的参数。
Kotlinpublic class FcrStreamParameters {
// 小流
public static class LowStream {
public static int width = 320;
public static int height = 240;
public static int frameRate = 15;
public static int bitRate = 200;
}
// 大流
public static class HeightStream {
public static int width = 640;
public static int height = 480;
public static int frameRate = 15;
public static int bitRate = 600;
}
} -
调用 AgoraClassroomSDK 的
exit
方法关闭灵动课堂。示例代码如下:KotlinAgoraClassroomSDK.exit()
-
设置暗黑模式。
由于切换至暗黑模式需要重启 Activity,为了兼容所有手机型号,建议直接在
Application#onCreate
中设置主题,参考以下示例代码:Kotlinvoid setDarkMode() {
// 在这里添加是否开启暗黑模式的逻辑
boolean isDarkMode = ""
if (isDarkMode) {
SkinUtils.INSTANCE.setNightMode(true);
}
} -
为防止代码混淆,在
/Gradle Scripts/proguard-rules.pro
文件中添加以下代码:Kotlin-keep class io.agora.**{*;}
-keep class com.agora.**{*;}
-keep class com.hyphenate.**{*;}
集成云课堂
如果你使用灵动课堂云课堂默认 UI,无需修改灵动课堂云课堂的代码,参考以下步骤通过 Maven 添加远程依赖集成完整的灵动课堂:
-
在项目根目录的
build.gradle
文件中添加以下代码:Kotlinrepositories {
maven { url 'https://jitpack.io' }
google()
mavenCentral()
maven { url 'https://s01.oss.sonatype.org/content/repositories/snapshots/' }
} -
在项目根目录的
build.gradle
文件中添加以下依赖,引入AgoraCloudScene
、AgoraEduCore
模块:Kotlindependencies {
implementation "io.github.agoraio-community:AgoraEduCore:版本号"
implementation "io.github.agoraio-community:AgoraCloudScene:版本号"
}例如,你想获取 2.8.70 的版本:
Kotlindependencies {
implementation "io.github.agoraio-community:AgoraEduCore:2.8.70"
implementation "io.github.agoraio-community:AgoraCloudScene:2.8.70"
}信息点击此处查看灵动课堂最新版本。
-
在 Application 的
onCreate
方法里面,初始化以下代码:KotlinAgoraSDKInitUtils.initSDK(this)
-
调用 AgoraOnlineClassroomSDK.launch 方法启动课堂,AgoraOnlineClassroomSDK 和 AgoraClassroomSDK参数是一样的。示例代码如下:
Kotlin// 启动教室前,需要动态申请 `Manifest.permission.RECORD_AUDIO` 和 `Manifest.permission.CAMERA` 权限
fun startClassRoom() {
val appId = "" // 填入你的 App ID
val rtmToken = "" // 填入你的 RTM Token
val userName = "" // 填入你的用户名
val roomName = "" // 填入你的房间名
val roomUuid = "" // 填入房间号
val userUuid = "" // 填入用户 ID
val roomType = RoomType.SMALL_CLASS.value // 班型传递 4小班课
val roleType = AgoraEduRoleType.AgoraEduRoleTypeStudent.value // 角色只支持 2:学生角色
val roomRegion = AgoraEduRegion.cn // 区域
val duration = 1800L // 课程时长
val config = AgoraEduLaunchConfig(
userName,
userUuid,
roomName,
roomUuid,
roleType,
roomType,
rtmToken,
null,
duration
)
config.appId = appId
config.region = roomRegion
// 设置大窗视频区域参数(大流)
config.videoEncoderConfig = EduContextVideoEncoderConfig(
FcrStreamParameters.HeightStream.width,
FcrStreamParameters.HeightStream.height,
FcrStreamParameters.HeightStream.frameRate,
FcrStreamParameters.HeightStream.bitRate
)
AgoraOnlineClassroomSDK.setConfig(AgoraOnlineClassSdkConfig(appId))
AgoraOnlineClassroomSDK.launch(this, config, AgoraEduLaunchCallback { event ->
Log.e("agora", ":launch-课堂状态:" + event.name)
})
} -
调用 AgoraClassroomSDK 的
exit
方法关闭灵动课堂。示例代码如下:KotlinAgoraClassroomSDK.exit()
-
为防止代码混淆,在
/Gradle Scripts/proguard-rules.pro
文件中添加以下代码:Kotlin-keep class io.agora.**{*;}
-keep class com.agora.**{*;}
云课堂暂不支持暗黑模式。
集成注意事项
第三方库说明
不管以何种方式集成灵动课堂,灵动课堂使用的第三方库可能和你自己的工程所依赖的第三方库产生版本冲突。这种情况下,你可通过 exclude
的方式或者是修改自己工程所依赖的版本解决冲突。