6_1-互动学堂场景(Activity)
更新時間:2023-04-17 15:27:57
1 功能概述
互動學堂場景的介面實作為 PLVHCLiveHiClassActivity
互動學堂場景下定義的 講師、學生 的 共用介面。 支援的功能有:連麥、聊天室、文件、課堂管理
2 介面介紹
/**
* 启动互动学堂上课页
*
* @param activity 上下文Activity
* @param channelId 频道号
* @param courseCode 课程号,课程登录时需要传
* @param lessonId 课节Id
* @param token token
* @param sessionId 场次Id
* @param userType 用户类型
* @param viewerId 上课者Id
* @param viewerName 上课者昵称
* @param avatarUrl 上课者头像url
* @return PLVLaunchResult.isSuccess=true表示启动成功,PLVLaunchResult.isSuccess=false表示启动失败
*/
@SuppressWarnings("ConstantConditions")
@NonNull
public static PLVLaunchResult launchHiClass(@NonNull Activity activity,
@NonNull String channelId,
String courseCode,
long lessonId,
@NonNull String token,
@NonNull String sessionId,
@NonNull String userType,
@NonNull String viewerId,
@NonNull String viewerName,
@NonNull String avatarUrl,
boolean isShowDeviceDetectionLayout);
3 實作介紹
互動學堂將每個功能模組封裝成一個佈局Layout類別,根據展示需要的不同在Fragment中對佈局進行組合,在Activity中透過簡單地添加Fragment即可完成整合。
3.1 初始化頁面參數
private void initParams() {
// 获取输入数据
Intent intent = getIntent();
String channelId = intent.getStringExtra(EXTRA_CHANNEL_ID);
String viewerId = intent.getStringExtra(EXTRA_VIEWER_ID);
String viewerName = intent.getStringExtra(EXTRA_VIEWER_NAME);
String avatar = intent.getStringExtra(EXTRA_AVATAR_URL);
String userType = intent.getStringExtra(EXTRA_USER_TYPE);
String token = intent.getStringExtra(EXTRA_TOKEN);
long lessonId = intent.getLongExtra(EXTRA_LESSON_ID, 0);
String courseCode = intent.getStringExtra(EXTRA_COURSE_CODE);
// 设置Config数据
PLVLiveChannelConfigFiller.setupUser(viewerId, viewerName, avatar, userType);
PLVLiveChannelConfigFiller.setupChannelId(channelId);
PLVLiveChannelConfigFiller.setHiClassConfig(token, lessonId, courseCode);
// 配置互动学堂信息,页面销毁时需调用PLVHiClassGlobalConfig.clear方法清除
PLVHiClassGlobalConfig.setupConfig(token, userType, PLVSocketUserConstant.USERTYPE_TEACHER.equals(userType), courseCode, lessonId, channelId);
}
3.2 初始化直播間資料管理器
private void initLiveRoomManager() {
// 使用PLVLiveChannelConfigFiller配置好直播参数后,用其创建直播间数据管理器实例
liveRoomDataManager = new PLVLiveRoomDataManager(PLVLiveChannelConfigFiller.generateNewChannelConfig());
// 设置场次Id
String sessionId = getIntent().getStringExtra(EXTRA_SESSION_ID);
liveRoomDataManager.setSessionId(sessionId);
// 进行网络请求,获取详情课节数据
liveRoomDataManager.requestLessonDetail();
}
3.3 初始化頁面UI
private void initView() {
// 先初始化连麦布局
plvhcLinkmicLy.init(liveRoomDataManager);
// 初始化状态栏布局
plvhcStatusBarLy.init(liveRoomDataManager);
// 初始化工具栏布局
plvhcToolBarLy.init(liveRoomDataManager);
// 初始化连麦的媒体配置
// 省略代码 ...
// 初始化文档布局
plvhcDocumentLy.init(liveRoomDataManager);
// 初始化学生观看倒计时布局
// ... 省略代码
// 注册linkMicView
// 省略代码 ...
// 进入横屏模式
PLVScreenUtils.enterLandscape(this);
}
根據不同的業務需要,可以選擇不同的Layout組合進行初始化。
各個功能模組的佈局介面如下:
連麥佈局介面:IPLVHCLinkMicLayout
聊天室佈局介面:PLVHCChatroomLayout
文件佈局介面:IPLVHCDocumentLayout
狀態列佈局介面:IPLVHCStatusBarLayout
工具列佈局介面:IPLVHCToolBarLayout
3.4 設定佈局回呼
由於各個功能之間需要進行通訊,例如連麥的網路狀態改變需要更新狀態列的網路狀態UI、工具列的上課下課按鈕狀態也會根據課節狀態而改變,因此每個佈局都提供了外部可以使用的回呼,方便各個功能模組進行通訊。
詳細介面介紹請參考各個功能模組的具體介紹文章。
回呼設定和處理請參考Activity中的設定佈局回呼方法區塊。
