3_1-云课堂场景(Activity)

1 功能概述

云课堂场景的界面实现为 PLVLCCloudClassActivity

云课堂场景下定义的 直播模式、回放模式 的 共用界面。 直播支持的功能有:播放器、页面菜单、悬浮PPT、连麦、互动应用。 回放支持的功能有:播放器、页面菜单、悬浮PPT。

2 接口介绍

//1.3.0增加viewerAvatar参数

/**
 * 启动直播页
 *
 * @param activity   上下文Activity
 * @param channelId  频道号
 * @param viewerId   观众ID
 * @param viewerName 观众昵称
 * @param viewerAvatar  观众头像
 * @return true表示启动成功,false表示启动失败
 */
public static boolean launchLive(@NonNull Activity activity,
                                 @NonNull String channelId,
                                 @NonNull String viewerId,
                                 @NonNull String viewerName,
                                 @NonNull String viewerAvatar);

/**
 * 启动回放页面
 *
 * @param activity      上下文Activity
 * @param channelId     频道号
 * @param vid           视频ID
 * @param viewerId      观众ID
 * @param viewerName    观众昵称
 * @param viewerAvatar  观众头像
 * @param videoListType 回放视频类型,参考{@link PolyvPlaybackListType}
 * @return true表示启动成功,false表示启动失败
 */
public static boolean launchPlayback(@NonNull Activity activity,
                                     @NonNull String channelId,
                                     @NonNull String vid,
                                     @NonNull String viewerId,
                                     @NonNull String viewerName,
                                     @NonNull String viewerAvatar,
                                     int videoListType);

3 实现介绍

云课堂将每个功能模块封装成一个布局Layout类,在Activity中通过简单地布局组合即可完成集成。

3.1 初始化页面参数

private void initParams() {
    // 获取输入数据
    Intent intent = getIntent();
    boolean isLive = intent.getBooleanExtra(EXTRA_IS_LIVE, true);
    String channelId = intent.getStringExtra(EXTRA_CHANNEL_ID);
    String viewerId = intent.getStringExtra(EXTRA_VIEWER_ID);
    String viewerName = intent.getStringExtra(EXTRA_VIEWER_NAME);

    // 设置Config数据
    PLVLiveChannelConfigFiller.setIsLive(isLive);
    PLVLiveChannelConfigFiller.setupUser(viewerId, viewerName);
    PLVLiveChannelConfigFiller.setupChannelId(channelId);

    // 根据不同模式,设置对应参数
    if (!isLive) { // 回放模式
        String vid = intent.getStringExtra(EXTRA_VID);
        int videoListType = intent.getIntExtra(EXTRA_VIDEO_LIST_TYPE, PolyvPlaybackListType.PLAYBACK);
        PLVLiveChannelConfigFiller.setupVid(vid);
        PLVLiveChannelConfigFiller.setupVideoListType(videoListType);
    }
}

3.2 初始化直播间数据管理器

private void initLiveRoomManager() {
    // 使用PLVLiveChannelConfigFiller配置好直播参数后,用其创建直播间数据管理器实例
    liveRoomDataManager = new PLVLiveRoomDataManager(PLVLiveChannelConfigFiller.generateNewChannelConfig());

    // 进行网络请求,获取上报观看热度
    liveRoomDataManager.requestPageViewer();

    // 进行网络请求,获取直播详情数据
    liveRoomDataManager.requestChannelDetail();

    // 进行网络请求,获取功能开关数据
    liveRoomDataManager.requestChannelSwitch();
}

3.3 初始化页面UI

private void initView() {
	//初始化共用的UI

    if(liveRoomDataManager.getConfig().isLive()){
    	//初始化直播的UI
    }else{
    	//初始化回放的UI
    }
}

根据当前是直播或回放,将选择不同的Layout控件组合进行初始化。

直播支持的功能有:播放器、页面菜单、悬浮PPT、连麦、互动应用。

回放支持的功能有:播放器、页面菜单、悬浮PPT。

各个功能模块的布局接口如下:

播放器布局接口:IPLVLCMediaLayout

连麦布局接口:IPLVLCLinkMicLayout

直播页面菜单布局接口:IPLVLCLivePageMenuLayout

互动应用布局接口:IPLVInteractLayout

PPT布局接口:IPLVLCFloatingPPTLayout

3.4 设置布局回调

由于各个功能之间需要进行通信,例如播放器的直播开始和直播结束状态会影响到PPT的显示和隐藏,因此每个布局都提供了外部可以使用的回调,方便各个功能模块进行通信。

详细接口介绍请参考各个功能模块的具体介绍文章。

回调设置和处理请参考Activity中的设置布局回调方法块。

3.5 处理屏幕旋转

云课堂场景的直播和回放均支持横竖屏观看,需要在Activity中做对应的代码处理。

参考代码块:屏幕旋转处理

Last updated