4_1-带货场景(Activity)
1 功能概述
帶貨場景的介面實作為 PLVECLiveEcommerceActivity
帶貨場景下定義的 直播模式、回放模式 的 共用介面。 直播支援的功能有:播放器、聊天室、商品、打賞、互動應用。 回放支援的功能有:播放器。
2 介面介紹
//1.3.0增加viewerAvatar参数
/**
* 启动直播带货直播页
*
* @param activity 上下文Activity
* @param channelId 频道号
* @param viewerId 观众ID
* @param viewerName 观众昵称
* @param viewerAvatar 观众头像地址
* @return PLVLaunchResult.isSuccess=true表示启动成功,PLVLaunchResult.isSuccess=false表示启动失败
*/
public static PLVLaunchResult 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 PLVLaunchResult.isSuccess=true表示启动成功,PLVLaunchResult.isSuccess=false表示启动失败
*/
public static PLVLaunchResult launchPlayback(@NonNull Activity activity,
@NonNull String channelId,
@NonNull String vid,
@NonNull String viewerId,
@NonNull String viewerName,
@NonNull String viewerAvatar,
int videoListType);
3 實作介紹
直播帶貨將每個功能模組封裝成一個佈局Layout類別,根據展示需要的不同在Fragment中對佈局進行組合,在Activity中透過簡單地加入Fragment即可完成整合。
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();
}
3.3 初始化頁面UI
private void initView() {
// 页面上层ViewPage
viewPager = findViewById(R.id.watch_info_vp);
// 初始化共用的UI Fragment
initEmptyFragment();
initLiveDetailFragment();
initCommonHomeFragment();
// 添加Fragment到页面上层ViewPager中
PLVViewInitUtils.initViewPager(
getSupportFragmentManager(),
viewPager,
1,
liveDetailFragment,
commonHomeFragment,
emptyFragment
);
if(liveRoomDataManager.getConfig().isLive()){
// 初始化直播的播放器Layout
videoLayout = new PLVECLiveVideoLayout(this);
}else{
// 初始化回放的播放器Layout
videoLayout = new PLVECPlaybackVideoLayout(this);
}
}
根據不同的業務需要,可以選擇不同的Fragment組合進行初始化。
各個Fragment頁面及它們支援的功能如下:
直播首頁:PLVECLiveHomeFragment(支援:主持人資訊、聊天室、按讚、商品、打賞)
回放首頁:PLVECPalybackHomeFragment(支援:主持人資訊、播放控制、進度條)
直播詳情頁:PLVECLiveDetailFragment(支援:公告、直播介紹)
各個功能模組也被封裝成了Layout類別,可以選擇不同的Layout元件進行組合。
直播支援的功能有:播放器、聊天室、商品、打賞、互動應用。
回放支援的功能有:播放器。
各個功能模組的佈局如下:
播放器佈局:IPLVECVideoLayout
商品推送佈局:PLVECCommodityPushLayout
互動應用佈局:IPLVInteractLayout
打賞彈層佈局:PLVECRewardPopupView
3.4 設定佈局回呼
由於各個Fragment和Activity之間需要進行通訊,例如播放器的直播開始和直播結束狀態會影響到Fragment中播放資訊的顯示,因此每個Fragment頁面都提供了外部可以使用的回呼,方便進行通訊。
回呼設定和資料處理請參考Activity中的資料監聽 - 監聽業務資料和匿名內部類別 - view互動事件監聽器方法區塊。
