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中做对应的代码处理。
参考代码块:屏幕旋转处理