主播开播(Android)

最近更新时间:2025-09-18 11:20:02

我的收藏
TUILiveKit 主播开播页为直播场景提供开箱即用的全功能界面,支持快速搭建主播开播所需的核心能力,让您无需关注复杂 UI 与逻辑实现,即可高效集成直播开播流程。

功能概览

开播前预览:支持主播开播前的房间名称、背景、视频预览、美颜调试、音效调试、布局模板等多种个性化配置;
连麦互动:支持直播过程中与观众 或 与其他直播间主播实时互动;
观众互动:支持弹幕、礼物等丰富直播互动形式;
直播间管理:支持在线用户列表展示、以及直播间内的禁言、踢人等多种管理操作。
开播前预览
连麦互动
观众互动
直播间管理











快速接入

步骤 1. 开通服务

参考 开通服务 文档开通「体验版」或「大规模直播版」套餐。

步骤 2. 代码集成

参考 准备工作 接入 TUILiveKit

步骤 3. 添加开播前的准备页面

AnchorPrepareView 组件已内置了摄像头预览、音效设置、布局设置、以及其他功能设置,您需创建并加载 AnchorPrepareView ,具体示例代码如下:
Kotlin
Java
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.trtc.uikit.livekit.features.anchorprepare.AnchorPrepareView

class YourActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 1.创建并初始化 AnchorPrepareView
val anchorPrepareView = AnchorPrepareView(this)
anchorPrepareView.init("live_1236666", null)
// 2.将 AnchorPrepareView 添加到界面
setContentView(anchorPrepareView)
}
}
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.trtc.uikit.livekit.features.anchorprepare.AnchorPrepareView;

public class YourActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 1.创建并初始化 AnchorPrepareView
AnchorPrepareView anchorPrepareView = new AnchorPrepareView(this);
anchorPrepareView.init("live_1236666", null);

// 2.将 AnchorPrepareView 添加到界面
setContentView(anchorPrepareView);
}
}

步骤 4. 添加主播用的推流页面

AnchorView 组件已内置了音视频推流、观众连麦、直播互动、直播管理等功能,您只需创建并加载AnchorView ,具体示例代码如下:
Kotlin
Java
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.tencent.cloud.tuikit.engine.extension.TUILiveListManager
import com.tencent.cloud.tuikit.engine.room.TUIRoomDefine
import com.trtc.uikit.livekit.features.anchorboardcast.AnchorView
import com.trtc.uikit.livekit.features.anchorboardcast.AnchorViewDefine.RoomBehavior
import com.trtc.uikit.livekit.features.anchorprepare.AnchorPrepareViewDefine.LiveStreamPrivacyStatus.PUBLIC

class YourActivity : AppCompatActivity() {
lateinit var anchorPrepareView: AnchorPrepareView

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
anchorPrepareView = AnchorPrepareView(this)
anchorPrepareView.init("live_1236666", null)
setContentView(anchorPrepareView)
}

// 开播之后调用此段代码
fun initAnchorView() {
// 1.创建 AnchorView
val anchorView = AnchorView(this)

// 2.初始化 AnchorView,其中 liveInfo 为直播间信息,anchorPrepareView 为您的开播前的准备页面
val liveInfo = TUILiveListManager.LiveInfo()
liveInfo.roomInfo = TUIRoomDefine.RoomInfo();
liveInfo.roomInfo.roomId = "live_1236666"
liveInfo.roomInfo.name = anchorPrepareView.state?.roomName?.getValue()
liveInfo.isPublicVisible = anchorPrepareView.state?.liveMode?.getValue() == PUBLIC
liveInfo.coverUrl = anchorPrepareView.state?.coverURL?.getValue()
liveInfo.seatLayoutTemplateId = anchorPrepareView.state.coGuestTemplateId.getValue()!!
// 进房行为:
// RoomBehavior.CREATE_ROOM: 主播创建房间
// RoomBehavior.ENTER_ROOM: 观众进入房间
anchorView.init(liveInfo, anchorPrepareView?.coreView, RoomBehavior.CREATE_ROOM, null)


// 3.将 AnchorView 添加到界面
setContentView(anchorView)
}
}
import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

import com.tencent.cloud.tuikit.engine.extension.TUILiveListManager;
import com.tencent.cloud.tuikit.engine.room.TUIRoomDefine;
import com.trtc.uikit.livekit.features.anchorboardcast.AnchorView;
import com.trtc.uikit.livekit.features.anchorboardcast.AnchorViewDefine;
import com.trtc.uikit.livekit.features.anchorprepare.AnchorPrepareViewDefine;

public class YourActivity extends AppCompatActivity {

AnchorPrepareView anchorPrepareView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
anchorPrepareView = new AnchorPrepareView(this);
anchorPrepareView.init("live_123456", null);
setContentView(anchorPrepareView);
}

// 开播之后调用此段代码
private void initAnchorView() {
// 1.创建 AnchorView
AnchorView anchorView = new AnchorView(this);

// 2.初始化 AnchorView,其中 liveInfo 为直播间信息,anchorPrepareView 为您的开播前的准备页面
TUILiveListManager.LiveInfo liveInfo = new TUILiveListManager.LiveInfo();
liveInfo.roomInfo = new TUIRoomDefine.RoomInfo();
liveInfo.roomInfo.roomId = "live_1236666";
liveInfo.roomInfo.name = anchorPrepareView.getState().roomName.getValue();
liveInfo.isPublicVisible = anchorPrepareView.getState().liveMode.getValue() == AnchorPrepareViewDefine.LiveStreamPrivacyStatus.PUBLIC;
liveInfo.coverUrl = anchorPrepareView.getState().coverURL.getValue();
// 进房行为:
// RoomBehavior.CREATE_ROOM: 主播创建房间
// RoomBehavior.ENTER_ROOM: 观众进入房间
anchorView.init(liveInfo, anchorPrepareView.getCoreView(), AnchorViewDefine.RoomBehavior.CREATE_ROOM);

// 3.将 AnchorView 添加到界面
setContentView(anchorView);
}
}

步骤 5. 从准备页面跳转到推流页面

结合 步骤 3 实现 AnchorPrepareView组件的代理事件,完成主播开播页的跳转,具体示例代码如下:
Kotlin
Java
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.trtc.uikit.livekit.features.anchorprepare.AnchorPrepareView
import com.trtc.uikit.livekit.features.anchorprepare.AnchorPrepareViewDefine.AnchorPrepareViewListener

class YourActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val anchorPrepareView = AnchorPrepareView(this)
anchorPrepareView.init("live_1236666", null)

// 1.添加预览页面点击事件监听
anchorPrepareView.addAnchorPrepareViewListener(object : AnchorPrepareViewListener {
override fun onClickStartButton() {
// 2.处理点击事件,页面切换为您的主播推流页面,参考步骤 4 中的 initAnchorView 方法
initAnchorView()
}
override fun onClickBackButton() {
finish()
}
})

// 2.将 AnchorPrepareView 添加到界面
setContentView(anchorPrepareView)
}
}
import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

import com.trtc.uikit.livekit.features.anchorprepare.AnchorPrepareView;
import com.trtc.uikit.livekit.features.anchorprepare.AnchorPrepareViewDefine;

public class YourActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AnchorPrepareView anchorPrepareView = new AnchorPrepareView(this);
anchorPrepareView.init("live_123456", null);
// 1.添加预览页面点击事件监听
anchorPrepareView.addAnchorPrepareViewListener(new AnchorPrepareViewDefine.AnchorPrepareViewListener() {
@Override
public void onClickStartButton() {
// 2.处理点击事件,页面切换为您的主播推流页面,参考步骤 4 中的 initAnchorView 方法
initAnchorView()
}

@Override
public void onClickBackButton() {
finish();
}
});
setContentView(anchorPrepareView);
}
}

自定义您的界面布局

TUILiveKit 支持灵活定制开播页与直播页的功能和样式,您可根据业务需求调整布局、隐藏 / 显示功能模块。

直播布局模板选择

TUILiveKit 提供 4 种直播布局模板,您可在主播开播页的 UI 交互「布局」入口 选择合适样式:


布局模板一览:

名称
动态宫格布局
浮动小窗布局
固定宫格布局
固定小窗布局
模板 ID
600
601
800
801
描述
默认布局,可根据连麦人数动态调整宫格大小。
连麦嘉宾以浮动小窗形式显示。
连麦人数固定,每个嘉宾占据一个固定宫格。
连麦人数固定,嘉宾以固定小窗形式显示。
预览







自定义开播页功能区

通过调用 步骤 3 创建的prepareView 的 API,可自定义隐藏开播准备页的操作区或特定功能:
Kotlin
Java
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.trtc.uikit.livekit.features.anchorprepare.AnchorPrepareView

class YourActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val anchorPrepareView = AnchorPrepareView(this)
anchorPrepareView.init("live_1236666", null)

// 1. 自定义功能区 - 示例:隐藏整个功能区
anchorPrepareView.disableFeatureMenu(true)
setContentView(anchorPrepareView)
}
}
import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

import com.trtc.uikit.livekit.features.anchorprepare.AnchorPrepareView;

public class YourActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AnchorPrepareView anchorPrepareView = new AnchorPrepareView(this);
anchorPrepareView.init("live_1236666", null);
// 1. 自定义功能区 - 示例:隐藏整个功能区
anchorPrepareView.disableFeatureMenu(true);

setContentView(anchorPrepareView);
}
}
隐藏整个功能区
隐藏美颜按钮
隐藏音效按钮
隐藏摄像头切换按钮
disableFeatureMenu(true)
disableMenuBeautyButton(true)
disableMenuAudioEffectButton(true)
disableMenuSwitchCameraButton(true)













自定义主播直播页功能区

通过调用 步骤 4 创建的 anchorView 的 API,可自定义隐藏主播直播页的操作区或特定功能:
Kotlin
Java
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.tencent.cloud.tuikit.engine.extension.TUILiveListManager
import com.tencent.cloud.tuikit.engine.room.TUIRoomDefine
import com.trtc.uikit.livekit.features.anchorboardcast.AnchorView
import com.trtc.uikit.livekit.features.anchorboardcast.AnchorViewDefine.RoomBehavior
import com.trtc.uikit.livekit.features.anchorprepare.AnchorPrepareViewDefine.LiveStreamPrivacyStatus.PUBLIC

class YourActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val anchorView = AnchorView(this)
val liveInfo = TUILiveListManager.LiveInfo()
liveInfo.roomInfo = TUIRoomDefine.RoomInfo();
liveInfo.roomInfo.roomId = "live_1236666"
liveInfo.roomInfo.name = anchorPrepareView.state?.roomName?.getValue()
liveInfo.isPublicVisible = anchorPrepareView.state?.liveMode?.getValue() == PUBLIC
liveInfo.coverUrl = anchorPrepareView.state?.coverURL?.getValue()
liveInfo.seatLayoutTemplateId = anchorPrepareView.state.coGuestTemplateId.getValue()!!
anchorView.init(liveInfo, anchorPrepareView?.coreView, RoomBehavior.CREATE_ROOM, null)

// 1. 自定义功能区 - 示例:隐藏主播连线功能
anchorView.disableFooterCoHost(true)

setContentView(anchorView)
}
}
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.tencent.cloud.tuikit.engine.extension.TUILiveListManager;
import com.tencent.cloud.tuikit.engine.room.TUIRoomDefine;
import com.trtc.uikit.livekit.features.anchorboardcast.AnchorView;
import com.trtc.uikit.livekit.features.anchorboardcast.AnchorViewDefine;
import com.trtc.uikit.livekit.features.anchorprepare.AnchorPrepareViewDefine;

public class YourActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AnchorView anchorView = new AnchorView(this);
TUILiveListManager.LiveInfo liveInfo = new TUILiveListManager.LiveInfo();
liveInfo.roomInfo = new TUIRoomDefine.RoomInfo();
liveInfo.roomInfo.roomId = "live_1236666";
liveInfo.roomInfo.name = anchorPrepareView.getState().roomName.getValue();
liveInfo.isPublicVisible = anchorPrepareView.getState().liveMode.getValue() == AnchorPrepareViewDefine.LiveStreamPrivacyStatus.PUBLIC;
liveInfo.coverUrl = anchorPrepareView.getState().coverURL.getValue();
anchorView.init(liveInfo, anchorPrepareView.getCoreView(), AnchorViewDefine.RoomBehavior.CREATE_ROOM);

// 1. 自定义功能区 - 示例:隐藏主播连线功能
anchorView.disableFooterCoHost(true);
setContentView(anchorView);
}
}
隐藏顶部观众列表功能
隐藏底部观众连麦功能
隐藏底部主播连线功能
隐藏底部主播 PK 功能
disableHeaderVisitorCnt(true)
disableFooterCoGuest(true)
disableFooterCoHost(true)
disableFooterBattle(true)













文案定制

TUILiveKit 使用 Android 通用的 XML 资源文件来管理 UI 所需的文案显示,您可以直接通过 XML 文件修改需要调整的文案:


图标定制

TUILiveKit 使用 Android 通用的 drawable 资源文件夹管理 UI 所需的图片资源,您可以通过替换资源文件快速修改自定义界面所需的图标,替换时请确保新的文件名称与原文件名称一致。


下一步

恭喜您,现在您已经成功集成了 主播开播 。接下来,您可以实现观众观看直播列表等功能,可参考下表:
功能
描述
集成指引
观众观看
实现观众进入主播的直播间后观看直播,实现观众连麦 、直播间信息、在线观众、弹幕显示等功能
直播列表
展示直播列表界面和功能,包含直播列表,房间信息展示功能

常见问题

开播后无画面?

请前往应用信息 > 权限 > 相机,检查摄像头权限是否开启,可参考下图:


点击开播按钮无法开播,提示“未登录”?

参考 登录指引, 确认已完成登录功能接入。