6_1-互动学堂场景(Activity)

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

Last updated