如果 Classroom 的 UI 交互不满足您的产品需求,且您需要根据自己的交互和业务逻辑自定义实现预定课堂相关的交互功能,您可以接入 TUIRoomEngine SDK,并参见 关键代码 相关调用来满足您的需求。
功能介绍
Classroom 支持预定课堂,用户可以预定一个课程并安排日程中的课堂。当课堂时间到来时,用户只需一键即可开始课堂。本文将详细介绍该特性的相关功能,并说明如何在 Classroom 组件中使用这一特性。
预定课堂 | 课堂列表 | 设置课堂时间 |
![]() | ![]() | ![]() |
功能接入
预定课堂
使用预定课堂功能时,您需要拉起 Classroom 中提供的预定房间页面。要为您的业务预订房间,只需在相应的 Activity 中执行以下代码:
Intent intent = new Intent(this, ScheduleConferenceActivity.class);startActivity(intent);
val intent = Intent(this, ScheduleConferenceActivity::class.java)startActivity(intent)
预定课堂可设置的属性:其中可设置内容包含:课堂名称、开始时间、课堂时长、时区、邀请成员(需导入成员列表)、课堂加密、学生管理(全体静音、全体禁画)等。
如何邀请成员:点击 "添加" 即可邀请成员。默认情况下用户列表需要您传入,为了方便您快速体验,我们提供了用户列表 Demo。具体请参见 如何邀请成员。
进入预定课堂界面 | 设置课堂信息 | 预定成功 |
![]() | ![]() | ![]() |
查看已预定的课堂
Classroom 提供了一个课堂列表的 UI 组件。通过将这个课堂列表组件布局到您自己的页面上,您就可以查看和修改当前用户所有已预订的课堂。
1. 为了适应您的业务需求,请在布局中加入课程列表:
<!-- 以您的父布局是ConstraintLayout为例,添加如下代码 --><FrameLayoutandroid:id="@+id/tuiroomkit_fl_conference_list_container"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintBottom_toBottomOf="parent"/>
2. 在对应的 Activity 中添加如下代码,拉起课堂列表:
ConferenceListFragment fragment = new ConferenceListFragment();FragmentTransaction transaction = this.getSupportFragmentManager().beginTransaction();transaction.add(R.id.tuiroomkit_fl_conference_list_container, fragment);transaction.commitAllowingStateLoss();
val fragment = ConferenceListFragment()val transaction = supportFragmentManager.beginTransaction()transaction.add(R.id.tuiroomkit_fl_conference_list_container, fragment)transaction.commitAllowingStateLoss()
课堂列表提供以下功能:
查看课堂列表:列表中包括您创建的课堂以及您被邀请参加的课堂。
查看课堂详情:您可以点击某个课堂查看该课堂的详情。
修改课堂信息:点击课堂列表某个课堂,若该课堂未进行,且您是老师,您可以修改该课堂信息。
点击课堂列表 | 查看该课堂详情 | 修改课堂信息 |
![]() | ![]() | ![]() |
如何邀请成员
您可在预定课堂界面或修改课堂界面,通过点击
参与学生
按钮弹出成员选择界面。默认情况下用户列表需要您传入(您可以使用我们提供用户列表 Demo 快速体验),您可以使用如下方式,根据您的业务需求导入需要邀请的成员。如何体验邀请学生的功能
首先参见 跑通 Demo,我们在 Demo 工程中提供了用户列表(Android/app/src/main/java/com/tencent/liteav/demo/SelectParticipants),并在
members.json
文件中已经预先配置了一些用于测试的用户信息,可以选取两个账号,分别在两个手机用我们配置的 userId 登录,然后在预定课堂或者编辑课堂时选择另一个用户,这样另一个用户的预定列表中就会出现刚才预定的课堂。

如何使用自定义通讯录
// 将 SelectParticipantActivity.class 替换为自定义通讯录的activityConferenceSession.sharedInstance().setContactsViewProvider(SelectParticipantActivity.class);
// 将 SelectParticipantActivity::class.java 替换为自定义通讯录的 activityConferenceSession.sharedInstance().setContactsViewProvider(SelectParticipantActivity::class.java)
说明:
SelectParticipantActivity
为自定义通讯录代码示例,您可在 Demo 工程下(目录:app/src/main/java/com/tencent/liteav/demo/SelectParticipants) 查看。2. 自定义通讯录向 Classroom 返回选择完毕的用户名单:在通讯录完成用户选择后,您需要将已选用户列表返回给 Classroom。您可以通过以下方法将数据返回给 Classroom。
Intent intent = new Intent();// participants 为选择完毕的用户列表,必须为 ArrayList<User> 类型。intent.putExtra(SELECTED_PARTICIPANTS, participants);setResult(3, intent);finish();
val intent = Intent()// participants 为选择完毕的用户列表,必须为 ArrayList<User> 类型。intent.putExtra(SELECTED_PARTICIPANTS, participants)setResult(3, intent)finish()
3. 修改课堂成员时 Classroom 向通讯录传递已选择的成员名单:您可通过以下方法获得该会议已选择的用户名单。
// 获取已选择的用户列表ConferenceParticipants participants = (ConferenceParticipants) bundle.getSerializable(CONFERENCE_PARTICIPANTS);ArrayList<User> selectedList = participants.selectedList;
// 获取已选择的用户列表val participants = bundle.getSerializable(CONFERENCE_PARTICIPANTS) as ConferenceParticipantsval selectedList: ArrayList<User> = participants.selectedList
完成以上内容后,通过点击
参与学生
按钮弹出成员选择界面,您可以在这里邀请或删除参与的学生。邀请并完成课堂的预定或修改后,对方的课堂列表中便会出现您所预定的课堂。预定课堂界面 点击 参与成员 | 用户列表中添加或删除成员 |
![]() | ![]() |
注意事项
预定课堂成功后,即可获取课堂号和预定信息。
如果需要同时预定不同日期/时间的房间,请分次选择时间并提交。
课堂预订的开始时间不能早于当前时间,但没有提前预订的天数限制。
预定的课堂到达结束时间后,若课堂没有被解散且课堂内没有用户,该课堂将从预定结束时间起保留6小时,在此期间您仍可以随时进入该课堂。
功能定制
如果当前的 UI 不满足您的需求,您可以通过修改源码来实现您满意的 UI 效果。
您可以通过修改 Android/tuiroomkit/src/main/java/com/tencent/cloud/tuikit/roomkit/view/schedule 目录下的源代码,来实现您满意的 UI 效果。为了您更方便的定制 UI,这里对预定会议的文件做了介绍。
SchdeuleConference├── ConferenceDetails // 会议详情界面├── ConferenceList // 会议列表界面├── ModifyConference // 修改会议界面├── SelectScheduleParticipant // 调用从外部传如的通讯录列表├── TimeZone // 设置时区界面└── View // 预定会议界面