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中的设置布局回调方法块。