保利威文档中心

幫助中心

5_1-手机开播场景(Activity)

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

1 功能概述

手機開播場景的介面實作為 PLVLSLiveStreamerActivity

手機開播場景支援的功能有推流、連麥、聊天、文件。

2 介面介紹

/**
 * 启动手机开播页
 *
 * @param activity      上下文Activity
 * @param channelId     频道号
 * @param viewerId      开播者ID
 * @param viewerName    开播者昵称
 * @param avatarUrl     开播者头像url
 * @param actor         开播者头衔
 * @param isOpenMic     是否打开麦克风
 * @param isOpenCamera  是否打开相机
 * @param isFrontCamera 是否使用前置摄像头
 * @return PLVLaunchResult.isSuccess=true表示启动成功,PLVLaunchResult.isSuccess=false表示启动失败
 */
public static PLVLaunchResult launchStreamer(@NonNull Activity activity,
                                             @NonNull String channelId,
                                             @NonNull String viewerId,
                                             @NonNull String viewerName,
                                             @NonNull String avatarUrl,
                                             @NonNull String actor,
                                             boolean isOpenMic,
                                             boolean isOpenCamera,
                                             boolean isFrontCamera);

3 實作介紹

手機開播將每個功能模組封裝成一個佈局Layout類別,在Activity中透過簡單的佈局組合即可完成整合。

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 avatarUrl = intent.getStringExtra(EXTRA_AVATAR_URL);
    String actor = intent.getStringExtra(EXTRA_ACTOR);
    // 设置Config数据
    PLVLiveChannelConfigFiller.setupUser(viewerId, viewerName, avatarUrl, PLVSocketUserConstant.USERTYPE_TEACHER, actor);
    PLVLiveChannelConfigFiller.setupChannelId(channelId);
}

3.2 初始化直播間資料管理器

private void initLiveRoomManager() {
    // 使用PLVLiveChannelConfigFiller配置好直播参数后,用其创建直播间数据管理器实例
    liveRoomDataManager = new PLVLiveRoomDataManager(PLVLiveChannelConfigFiller.generateNewChannelConfig());
    // 进行网络请求,获取直播详情数据
    liveRoomDataManager.requestChannelDetail();
}

3.3 初始化頁面UI

private void initView() {
    // 初始化推流和连麦布局
    plvlsStreamerLy.init(liveRoomDataManager);
    // 初始化推流的媒体配置
    boolean isOpenMic = getIntent().getBooleanExtra(EXTRA_IS_OPEN_MIC, true);
    boolean isOpenCamera = getIntent().getBooleanExtra(EXTRA_IS_OPEN_CAMERA, true);
    boolean isFrontCamera = getIntent().getBooleanExtra(EXTRA_IS_FRONT_CAMERA, true);
    plvlsStreamerLy.enableRecordingAudioVolume(isOpenMic);
    plvlsStreamerLy.enableLocalVideo(isOpenCamera);
    plvlsStreamerLy.setCameraDirection(isFrontCamera);
    // 初始化状态栏布局
    plvlsStatusBarLy.init(liveRoomDataManager);
    // 注册成员列表中的streamerView,并请求成员列表接口
    plvlsStreamerLy.getStreamerPresenter().registerView(plvlsStatusBarLy.getMemberLayoutStreamerView());
    plvlsStreamerLy.getStreamerPresenter().requestMemberList();
    // 初始化聊天室布局
    plvlsChatroomLy.init(liveRoomDataManager);
    // 初始化文档布局
    plvlsDocumentLy.init(liveRoomDataManager);
    // 进入横屏模式
    PLVScreenUtils.enterLandscape(this);
}

Demo中組合了推流、狀態列、成員列表、聊天室、文件佈局。

各個功能模組的佈局介面如下:

推流連麥佈局介面:IPLVLSStreamerLayout

狀態列佈局介面:IPLVLSStatusBarLayout

聊天室佈局介面:IPLVLSChatroomLayout

文件佈局介面:IPLVLSDocumentLayout

3.4 設定佈局回呼

由於各個功能之間需要進行通訊,例如狀態列的點擊文件按鈕需要文件列表的顯示回應,因此每個佈局都提供了外部可以使用的回呼,方便各個功能模組進行通訊。

詳細介面介紹請參考各個功能模組的具體介紹文章。

回呼設定與處理請參考Activity中的設定佈局回呼方法區塊。

联系客服,在线咨询