tencent cloud

实时音视频

动态与公告
产品动态
产品近期公告
关于 TRTC Live 正式上线的公告
关于TRTC Conference 正式版上线的公告
Conference 商业化版本即将推出
关于多人音视频 Conference 开启内测公告
关于音视频通话 Call 正式版上线的公告
关于腾讯云音视频终端 SDK 播放升级及新增授权校验的公告
关于 TRTC 应用订阅套餐服务上线的相关说明
产品简介
产品概述
基本概念
产品功能
产品优势
应用场景
性能数据
购买指南
计费概述
免费时长说明
月订阅
现收现付
TRTC 逾期与暂停政策
常见问题解答
退款说明
新手指引
Demo 体验
视频通话 SDK
组件介绍
开通服务
跑通 Demo
快速接入
离线唤醒
会话聊天
云端录制
AI 降噪
界面定制
Chat 集成通话能力
更多特性
无 UI 集成
服务端 API
客户端 API
解决方案
错误码表
发布日志
常见问题
视频会议 SDK
组件介绍(TUIRoomKit)
开通服务(TUIRoomKit)
跑通 Demo(TUIRoomKit)
快速接入(TUIRoomKit)
屏幕共享(TUIRoomKit)
预定会议(TUIRoomKit)
会中呼叫(TUIRoomKit)
界面定制(TUIRoomKit)
虚拟背景(TUIRoomKit)
会议控制(TUIRoomKit)
云端录制(TUIRoomKit)
AI 降噪(TUIRoomKit)
会中聊天(TUIRoomKit)
机器人推流(TUIRoomKit)
更多特性(TUIRoomKit)
客户端 API(TUIRoomKit)
服务端 API(TUIRoomKit)
常见问题(TUIRoomKit)
错误码 (TUIRoomKit)
SDK更新日志(TUIRoomKit)
直播与语聊 SDK
Live 视频直播计费说明
组件介绍
开通服务(TUILiveKit)
跑通 Demo
无 UI 集成
UI 自定义
直播监播
视频直播
语聊房
高级功能
客户端 API
服务端 API
错误码
发布日志
常见问题
RTC Engine
开通服务
SDK 下载
API-Example
接入指引
API-参考手册
高级功能
AI 集成
概述
MCP 配置
Skills 配置
集成指南
常见问题
RTC RESTFUL API
History
Introduction
API Category
Room Management APIs
Stream mixing and relay APIs
On-cloud recording APIs
Data Monitoring APIs
Pull stream Relay Related interface
Web Record APIs
AI Service APIs
Cloud Slicing APIs
Cloud Moderation APIs
Making API Requests
Call Quality Monitoring APIs
Usage Statistics APIs
Data Types
Appendix
Error Codes
控制台指南
应用管理
套餐包管理
用量统计
监控仪表盘
开发辅助
解决方案
实时合唱
常见问题
迁移指南
计费相关
功能相关
UserSig 相关
应对防火墙限制相关
缩减安装包体积相关
Andriod 与 iOS 相关
Web 端相关
Flutter 相关
Electron 相关
TRTCCalling Web 相关
音视频质量相关
其他问题
旧版文档
RTC RoomEngine SDK(旧)
集成 TUIRoom (Web)
集成 TUIRoom (Android)
集成 TUIRoom (iOS)
集成 TUIRoom (Flutter)
集成 TUIRoom (Electron)
TUIRoom API 查询
实现云端录制与回放(旧)
监控仪表盘计费(旧)
协议与策略
安全合规认证
安全白皮书
信息安全说明
服务等级协议
苹果隐私策略:PrivacyInfo.xcprivacy
TRTC 政策
隐私协议
数据处理和安全协议
词汇表

Android

PDF
聚焦模式
字号
最后更新时间: 2026-01-15 16:41:23
本文将介绍如何快速接入 TUICallKit 组件。您可以在 10 分钟内完成以下关键步骤,最终获得一个功能完备的音视频通话界面。


准备工作

环境要求

Android 版本要求:Android 5.0(SDK API Level 21)及以上版本。
Gradle 版本要求:Gradle 4.2.1 及以上的版本。
设备需满足:Android 5.0 及以上的手机设备。

开通服务

在使用腾讯云提供的音视频服务前,您需要前往控制台,为应用开通音视频服务。具体步骤详见 开通服务。开通服务后,请记录SDKAppIDSDKSecretKey,在后续的步骤(登录)中会用到。

快速接入

步骤1:导入组件

GitHub 中克隆或下载代码,然后将 TUIKit_Android 目录下的 atomic_xcall 目录下的 tuicallkit-kt 子目录复制到您当前工程的 app 同级目录中,如下图所示。


步骤2:工程配置

1. 在工程根目录下找到settings.gradle.kts(或 settings.gradle )文件,增加如下代码,导入tuicallkit-ktatomic_x 组件到项目中。
setting.gradle.kts
settings.gradle
include(":tuicallkit-kt")
include(":atomic_x")
include ':tuicallkit-kt'
include ':atomic_x'
2. 在 app 目录下找到 build.gradle.kts(或build.gradle) 文件,在dependencies 中增加如下代码,声明当前 app 对组件的依赖。
build.gradle.kts
build.gradle
dependencies {
api(project(":tuicallkit-kt"))
}
dependencies {
api project(':tuicallkit-kt')
}
说明:
TUICallKit 工程内部已经默认依赖:TRTC SDKIM SDKtuicallengine 以及公共库 tuicore,不需要开发者单独配置。如需进行版本升级,则修改tuicallkit-kt/build.gradle文件中的版本号即可。
3. 由于 SDK 内部使用了 Java 反射特性,需要将部分类加入不混淆名单。请在 app 目录下的 proguard-rules.pro 文件末尾添加如下代码。添加完后,点击右上角的 Sync Now,同步代码。
-keep class com.tencent.** { *; }
4. 在 app目录下找到AndroidManifest.xml 文件,在 application 节点中添加 tools:replace="android:allowBackup",覆盖组件内的设置,使用自己的设置。
// app/src/main/AndroidManifest.xml
<application
android:name=".BaseApplication"
android:allowBackup="false"
android:icon="@drawable/app_ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/AppTheme"
tools:replace="android:allowBackup">

步骤3:登录

在您的项目中添加如下代码,调用 login 方法实现 TUI 组件的登录。这一步骤至关重要,只有在成功登录之后,您才能正常使用 TUICallKit 提供的各项功能。
login
Android(Kotlin)
Android(Java)
import com.tencent.qcloud.tuicore.TUILogin
import com.tencent.qcloud.tuicore.interfaces.TUICallback
import com.tencent.qcloud.tuikit.tuicallkit.debug.GenerateTestUserSig

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)


val userId = "denny" // 请替换为您的UserId
val sdkAppId = 0 // 请替换为在控制台得到的SDKAppID
val secretKey = "****" // 请替换为在控制台得到的SecretKey
val userSig = GenerateTestUserSig.genTestUserSig(userId, sdkAppId, secretKey)
TUILogin.login(this, sdkAppId, userId, userSig, object : TUICallback() {
override fun onSuccess() {
}
override fun onError(errorCode: Int, errorMessage: String) {
}
})
}
}
import com.tencent.qcloud.tuicore.TUILogin;
import com.tencent.qcloud.tuicore.interfaces.TUICallback;
import com.tencent.qcloud.tuikit.tuicallkit.debug.GenerateTestUserSig;

public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String userId = "denny"; // 请替换为您的UserId
int sdkAppId = 0; // 请替换为第一步在控制台得到的SDKAppID
String secretKey = "****"; // 请替换为第一步在控制台得到的SecretKey
String userSig = GenerateTestUserSig.genTestUserSig(userId, sdkAppId, secretKey);
TUILogin.login(this, sdkAppId, userId, userSig, new TUICallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(int errorCode, String errorMessage) {
}
});
}
}

参数
类型
说明
userId
String
只允许包含大小写英文字母(a-z A-Z)、数字(0-9)及下划线和连词符。
sdkAppId
int
Tencent RTC 控制台 创建的音视频应用的唯一标识 SDKAppID。
secretKey
String
Tencent RTC 控制台 创建的音视频应用的 SDKSecretKey。
userSig
String
一种安全保护签名,用于对用户进行登录鉴权认证,确认用户是否真实,阻止恶意攻击者盗用您的云服务使用权。
说明:
开发环境:如果您正在本地开发调试阶段,可以采用本地 GenerateTestUserSig.genTestSig 函数生成 userSig。该方法中 SDKSecretKey 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量。
生产环境:如果您的项目要发布上线,请采用 服务端生成 UserSig 的方式。

步骤4:设置昵称和头像[可选]

首次登录的用户没有头像和昵称信息,您可以通过 setSelfInfo 接口设置头像和昵称:
setSelfInfo
Android(Kotlin)
Android(Java)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit

val nickname = "jack"
val avatar = "https:/****/user_avatar.png"
TUICallKit.createInstance(context).setSelfInfo(nickname, avatar, null)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;

String nickname = "jack";
String avatar = "https:/****/user_avatar.png";
TUICallKit.createInstance(context).setSelfInfo(nickname, avatar, null);
参数
类型
说明
nickname
String
目标用户的昵称
avatar
String
目标用户的头像

步骤5:发起通话

拨打方可以通过调用 calls 函数,并指定通话类型和被叫方的 userID,来发起语音或视频通话。calls 接口同时支持一对一通话和多人通话。当用户 ID 列表(userIDList)中包含一个用户 ID 时,为一对一通话;当用户列表包含多个用户 ID 时,则为多人通话。
calls
Kotlin
Java
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit
import io.trtc.tuikit.atomicxcore.api.call.CallMediaType
import io.trtc.tuikit.atomicxcore.api.call.CallParams

val userIdList = mutableListOf<String>()
userIdList.add("mike")
val mediaType = CallMediaType.Audio
val callParams = CallParams()
TUICallKit.createInstance(context).calls(userIdList, mediaType, params, null)

import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;
import io.trtc.tuikit.atomicxcore.api.call.CallMediaType;
import io.trtc.tuikit.atomicxcore.api.call.CallParams;

List<String> userIdList = new ArrayList<>();
userIdList.add("mike");
CallMediaType mediaType = CallMediaType.Audio;
CallParams params = new CallParams();
TUICallKit.createInstance(this).calls(userIdList, mediaType, params, null);

参数
类型
说明
userIdList
List<String>
目标用户的 userId 列表
mediaType
通话的媒体类型,例如视频通话、语音通话
params
通话扩展参数,例如:房间号、通话邀请超时时间等

步骤6:接听通话

接听端完成登录后,拨打端发起通话,接收端就可以收到通话邀请,同时伴随铃声和振动。

更多功能

开启悬浮窗功能

您可以通过调用 enableFloatWindow 开启/关闭悬浮窗功能,在初始化 TUICallKit 组件时启用该功能,默认状态为关闭(false)。可通过点击通话界面左上角的悬浮窗按钮,将通话界面缩小为悬浮窗形式。

enableFloatWindow
Kotlin
Java
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit

TUICallKit.createInstance(this).enableFloatWindow(true)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;

TUICallKit.createInstance(this).enableFloatWindow(true);
详情:默认为 false,通话界面左上角的悬浮窗按钮隐藏,设置为 true 后显示。

开启来电横幅

您可以通过调用 enableIncomingBanner 开启/关闭来电横幅显示,该功能默认为关闭状态(false)。当被叫端收到来电时,默认展示全屏通话等待界面。启用此功能后,将首先显示一个横幅通知,然后根据需要切换到全屏通话界面。请注意,显示来电横幅需要授予悬浮权限,具体的显示策略将根据权限设置及应用当前是否在前台或后台运行来决定,具体策略可参考:被叫端来电显示策略

enbaleIncomingBanner
Android(Kotlin)
Android(Java)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit

TUICallKit.createInstance(context).enableIncomingBanner(true)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;

TUICallKit.createInstance(context).enableIncomingBanner(true);
详情:默认为 false,被叫端收到邀请后默认弹出全屏通话等待界面。开启后先展示一个横幅,然后根据需要拉起全屏通话界面。

多人通话

主叫方使用 calls 方法发起通话时,若被叫用户列表超过一人,则自动视为多人通话。其他成员可通过 join 方法加入该多人通话。
发起多人通话:使用 calls 方法发起通话时,若被叫用户列表(userIdList)超过一人,则自动视为群组通话。
calls
Android(Kotlin)
Android(Java)
import com.tencent.cloud.tuikit.engine.call.TUICallDefine
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit
import io.trtc.tuikit.atomicxcore.api.call.CallMediaType
import io.trtc.tuikit.atomicxcore.api.call.CallParams

val userIdList = mutableListOf<String>()
userIdList.add("mike")
userIdList.add("tate")
val mediaType = CallMediaType.Audio
val params = CallParams()
TUICallKit.createInstance(context).calls(userIdList, mediaType, params, null)
import com.tencent.cloud.tuikit.engine.call.TUICallDefine;
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;
import io.trtc.tuikit.atomicxcore.api.call.CallMediaType;
import io.trtc.tuikit.atomicxcore.api.call.CallParams;

List<String> userIdList = new ArrayList<>();
userIdList.add("mike");
userIdList.add("tate");
CallMediaType mediaType = CallMediaType.Audio;
CallParams params = new CallParams();
TUICallKit.createInstance(context).calls(userIdList, mediaType, params, null);
参数
类型
说明
userIdList
List<String>
目标用户的 userId 列表
mediaType
通话的媒体类型,例如视频通话、语音通话
params
通话扩展参数,例如:房间号、通话邀请超时时间等
加入多人通话:可使用 join 方法加入指定的群组通话。
join
Android(Kotlin)
Android(Java)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit

val callId = "123456"
TUICallKit.createInstance(this).join(callId, null)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;

String callId = "123456";
TUICallKit.createInstance(this).join(callId, null);
参数
类型
说明
callId
String
此次通话的唯一标识。

语言设置

支持的语言:目前支持简体中文、繁体中文、英文、日文和阿拉伯语。
切换语言:TUICallKit 默认语言与手机系统保持一致 。如果需要切换语言,可以使用 TUIThemeManager.getInstance().changeLanguage 方法设置语言,以设置语言为英文示例代码如下
changeLanguage
Android(Kotlin)
Android(Java)
import com.tencent.qcloud.tuicore.TUIThemeManager;

public class MainActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
val language = TUIThemeManager.LANGUAGE_ZH_CN // 设置的语言
TUIThemeManager.getInstance().changeLanguage(applicationContext, language)
}
}
import com.tencent.qcloud.tuicore.TUIThemeManager;

public class MainActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String language = TUIThemeManager.LANGUAGE_EN; // 设置的语言
TUIThemeManager.getInstance().changeLanguage(getApplicationContext(), language);
}
}
参数
类型
说明
language
String
设置的语言:
TUIThemeManager.LANGUAGE_EN:英文。
TUIThemeManager.LANGUAGE_AR:阿拉伯语。
TUIThemeManager.LANGUAGE_ZH_HK:中文繁体。
TUIThemeManager.LANGUAGE_ZH_CN:中文简体。
说明:
如需设置其他语言,请联系我们(info_rtc@tencent.com)获取协助。

铃声设置

您可通过以下方式设置默认铃声、来电静音模式、离线推送铃声:
设置默认铃声(方式1):如果您通过源码依赖 TUICallKit 组件,您可以替换铃声资源文件(发起呼叫时的铃声接到呼叫时的铃声)设置默认铃声。
设置默认铃声(方式2):通过 setCallingBell 接口设置被叫端收到的来电铃声。
setCallingBell
Android(Kotlin)
Android(Java)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit

val filePath = "***/callingBell.mp3"
TUICallKit.createInstance(context).setCallingBell(filePath)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;

String filePath = "***/callingBell.mp3";
TUICallKit.createInstance(context).setCallingBell(filePath);
详情:这里仅限传入本地文件地址,需要确保该文件目录是应用可以访问的。铃声设置后与设备绑定,更换用户,铃声依旧会生效。如需恢复默认铃声,filePath 传空即可。
参数
类型
说明
filePath
String
铃声文件的路径
来电静音模式:您可以通过 enableMuteMode 设置静音模式。
enableMuteMode
Android(Kotlin)
Android(Java)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit

TUICallKit.createInstance(context).enableMuteMode(true)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;

TUICallKit.createInstance(context).enableMuteMode(true);
详情:开启后,收到通话请求,不会播放来电铃声。
自定义离线推送铃声:可参考自定义铃声

自定义您的 UI

替换图标按钮

您可以直接替换 res\\drawable-xxhdpi 文件夹下的图标,以确保整个 App 中的图标色调风格保持一致。以下列出了基本的功能按钮,您可以替换对应的图标以适配自己的业务场景。

常见问题

如果您的接入和使用过程中遇到问题,请参见 常见问题

交流与反馈

如果您在接入或使用过程有任何疑问或者建议,欢迎加入 Telegram 技术交流群组,或联系我们获取支持


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈