保利威文档中心

幫助中心

4_1-带货场景(Activity)

更新時間:2023-04-17 15:27:57

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互動事件監聽器方法區塊。

联系客服,在线咨询