You need to enable JavaScript to run this app.
导航

基础功能

最近更新时间2024.05.17 17:41:20

首次发布时间2023.06.05 21:38:14

本文介绍如何实现 Android 开播 SDK 的基础功能。

前提条件

您已集成 Android 开播 SDK。详见 集成 Android 开播 SDK

进入和退出直播间

在定义如何进入直播间的文件中,添加以下代码:

说明

通过调用 CreateActivityAPIV2ListActivityAPI 获取直播间的活动 ID,调用 GetTemporaryLoginTokenAPI 获取开播密钥。

/**
  *  进入直播间
  *
  *  @param activity   用于调用直播间所在页面的 Activity
  *  @param activityId 直播间的活动 ID
  *  @param secretKey  开播密钥
  */
TVUPushLiveRoom.startPushLiveRoom(activity, activityId, secretKey);

在定义如何退出直播间的文件中,添加以下代码:

/**
  *  退出直播间
  *
  *  @param context 上下文
  */
TVUPushLiveRoom.leavePushLiveRoom(context);

自定义配置

定制前台通知

App 在后台运行时,SDK 会通过显示前台通知来保证后台不断流。您可以定制通知的图标和文案。

NotificationInfo info = new NotificationInfo(
        R.mipmap.ic_launcher_round, // 图标
         "企业直播", // 标题
         "App 后台运行中"); // 详情
PushSettings.Holder.mSettings.setKeepLiveServiceNotifyInfo(info);

设置是否显示评论区

设置开播后是否显示评论区的消息和输入框。
默认值:true

  • true:显示评论区
  • false:不显示评论区
PushSettings.Holder.mSettings.getUiSettings().setEnableCommentArea(true);

添加自定义组件

在直播间提供一个撑满屏幕且层级在当前界面元素之上的 UI 区域,供您添加自定义组件。

注意

该配置自 1.30.0 版本开始不再支持使用。请使用 onCustomUIAreaEnabled 回调替代之。

CustomUIAreaListener uiAreaListener = container -> {
    View view = new View(container.getContext());
    view.setBackgroundColor(Color.RED);
    FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(SizeUtils.dp2px(40),
            SizeUtils.dp2px(40));
    lp.gravity = Gravity.CENTER;
    container.addView(view, lp);
};
PushSettings.Holder.mSettings.getUiSettings().setCustomUIAreaListener(uiAreaListener);

定制开播页背景图

定制横屏或竖屏开播页的背景图。
横屏

PushSettings.Holder.mSettings.getUiSettings().setLandscapeBackgroundDrawableListener(new ITVUSingleDrawableListener() {
    // 在需要显示开播页背景图时调用该方法,可返回 Drawable 对象(定制背景图)
    @Override
    public Drawable onGetSingleDrawable() {
        return AppCompatResources.getDrawable(getApplicationContext(), R.drawable.background_landscape);
    }
});

竖屏

PushSettings.Holder.mSettings.getUiSettings().setPortraitBackgroundDrawableListener(new ITVUSingleDrawableListener() {
    // 在需要显示开播页背景图时调用该方法,可返回 Drawable 对象(定制背景图)
    @Override
    public Drawable onGetSingleDrawable() {
        return AppCompatResources.getDrawable(getApplicationContext(), R.drawable.background_portrait);
    }
});

设置是否显示模板入口按钮

public void enableShowCloudTemplateEntrance(boolean enable)

参数

名称

类型

说明

enable

Boolean

是否显示模板入口按钮。
默认值:true

  • true:显示模板入口按钮。
  • false:不显示模板入口按钮。

设置是否支持新增和编辑模板

public void enableEditCloudTemplateEnable(boolean enable)

参数

名称

类型

说明

enable

Boolean

是否支持新增和编辑模板。
默认值:true

  • true:支持新增和编辑。
  • false:不支持新增和编辑。

设置是否支持编辑直播间的横屏封面和标题

public void enableEditLiveInfo(boolean enable)

参数

名称

类型

说明

enable

Boolean

是否支持编辑直播间的横屏封面和标题。
默认值:true

  • true:支持编辑。
  • false:不支持编辑。

设置是否显示美颜入口按钮

public void setShowBeautyEntrance(boolean showBeautyEntrance)

参数

名称

类型

说明

showBeautyEntrance

Boolean

是否显示美颜入口按钮。
默认值:true

设置是否显示道具入口按钮

public void setShowPropsEntrance(boolean showPropsEntrance)

参数

名称

类型

说明

showPropsEntrance

Boolean

是否显示道具入口按钮。
默认值:true

设置是否显示挂件和图层入口按钮

public void setShowPendentEntrance(boolean showPendentEntrance)

参数

名称

类型

说明

showPendentEntrance

Boolean

是否显示挂件和图层入口按钮。
默认值:true

  • true:显示。
  • false:不显示,并关闭模板功能,即不显示模板入口按钮、不支持新增和编辑模板。

设置是否显示前后摄像头翻转入口按钮

public void setShowSwitchCamera(boolean showSwitchCamera)

参数

名称

类型

说明

showSwitchCamera

Boolean

是否显示前后摄像头翻转入口按钮。
默认值:true

  • true:显示。
  • false:不显示。

设置是否显示横竖屏切换入口按钮

public void setShowRotateScreen(boolean showRotateScreen)

参数

名称

类型

说明

showRotateScreen

Boolean

是否显示横竖屏切换入口按钮。
默认值:true

  • true:显示。
  • false:不显示。

设置是否显示清晰度切换入口按钮

public void setShowChangeResolution(boolean showChangeResolution)

参数

名称

类型

说明

showChangeResolution

Boolean

是否显示清晰度切换入口按钮。
默认值:true

  • true:显示。
  • false:不显示。

设置是否显示录屏直播入口

public void setShowRecordScreenEntrance(boolean showRecordScreenEntrance)

参数

名称

类型

说明

showRecordScreenEntrance

Boolean

是否显示录屏直播入口。
默认值:true

  • true:显示。
  • false:不显示。

设置直播间事件回调

设置回调监听直播间变化。

PushSettings.Holder.mSettings.setPushRoomListener(new PushRoomListener() {
    TextView textView;

    @Override // 在主持人进入直播间成功后触发该回调
    public void onPushRoomJoined(Activity activity, TVUPushServer tvuPushServer) {
        // 添加自定义的 IM(即时消息)信令监听器
        tvuPushServer.getWsConnector().addListener(new WSCustomIMListener() {
            /**
             * 通过 SendCustomSystemMessageAPI 接口发送的自定义的 IM 信令收到回调
             * @param str 通过 SendCustomSystemMessageAPI 接口发送的自定义的 IM 信令
            */
            @Override 
            public void onReceiveIMString(String str) {
                if (textView != null) {
                    textView.setText(str);
                }
            }
        
            @Override // IM 建立连接失败回调
            public void onConnectFailed() {
        
            }
        
            @Override // IM 建立连接成功回调
            public void onConnected() {
        
            }
        });

        ToastUtil.displayToast("主持人进入直播间");
    }
    
    @Override // 在主持人进入直播间成功且直播间页面渲染完成后触发该回调
    public void onCustomUIAreaEnabled(FrameLayout container) {
        // 在直播间中添加自定义的 View
        textView = new TextView(container.getContext());
        textView.setBackgroundColor(Color.RED);
        FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(SizeUtils.dp2px(40),
                SizeUtils.dp2px(40));
        lp.gravity = Gravity.CENTER_VERTICAL;
        lp.leftMargin = SizeUtils.dp2px(20);
        container.addView(textView, lp);
    }

    @Override // 在主持人退出直播间时触发该回调。注意清理相关资源,避免内存泄露
    public void onPushRoomDestroyed(Activity activity) {
        ToastUtil.displayToast("主持人退出直播间");
    }

    @Override // 在屏幕朝向改变时触发该回调
    public void onPushRoomOrientationChanged(Activity activity, boolean isPortrait) {
        ToastUtil.displayToast("屏幕朝向改变:" + (isPortrait ? "竖屏" : "横屏"));
    }

    @Override // 在直播推流开始时触发该回调
    public void onPushStreamStarted() {
        ToastUtil.displayToast("直播开始");
    }

    @Override // 在直播推流结束时触发该回调
    public void onPushStreamStopped() {
        ToastUtil.displayToast("直播结束");
    }
});