Android

最近更新时间:2025-10-30 16:37:11

我的收藏
本文将介绍如何快速接入 TUICallKit 组件。您可以在 10 分钟内完成以下关键步骤,最终获得一个功能完备的音视频通话界面。


准备工作

环境要求

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

开通服务

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

快速接入

步骤1:导入组件

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


步骤2:工程配置

1. 在工程根目录下找到settings.gradle.kts(或settings.gradle)文件,在其中增加如下代码,导入tuicallkit-kt组件到项目中。
setting.gradle.kts
settings.gradle
include(":tuicallkit-kt")
include ':tuicallkit-kt'
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:登录

在您的项目中添加如下代码,它的作用是通过调用 TUICore 中的相关接口完成 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
实时音视频 TRTC 控制台 创建的音视频应用的唯一标识 SDKAppID。
secretKey
String
实时音视频 TRTC 控制台 创建的音视频应用的 SDKSecretKey。
userSig
String
一种安全保护签名,用于对用户进行登录鉴权认证,确认用户是否真实,阻止恶意攻击者盗用您的云服务使用权。
说明:
开发环境:如果您在本地开发调试阶段,可以采用本地 GenerateTestUserSig.genTestSig函数生成 userSig。该方法中 secretKey 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量。
生产环境:如果您的项目要发布上线,请采用 服务端生成 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 接口同时支持一对一通话和多人通话。当 userIDList 中包含一个 userID 时,为一对一通话;当 userIDList 包含多个 userID 时,则为多人通话。
calls
Kotlin
Java
import com.tencent.cloud.tuikit.engine.call.TUICallDefine
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit

val userIdList = mutableListOf<String>()
userIdList.add("mike")
val mediaType = TUICallDefine.MediaType.Audio
val params = TUICallDefine.CallParams()
TUICallKit.createInstance(context).calls(userIdList, mediaType, params, null)
import com.tencent.qcloud.tuikit.tuicallengine.TUICallDefine;
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;

List<String> userIdList = new ArrayList<>();
userIdList.add("mike");
TUICallDefine.MediaType mediaType = TUICallDefine.MediaType.Audio;
TUICallDefine.CallParams params = new TUICallDefine.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)。当被叫端收到来电时,默认展示全屏通话等待界面。启用此功能后,将首先显示一个横幅通知,然后根据需要切换到全屏通话界面。请注意,显示来电横幅需要授予悬浮权限,具体的显示策略将根据权限设置及应用当前是否在前台或后台运行来决定,具体策略可参考:被叫端来电显示策略

enbalecomingBanner
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,被叫端收到邀请后默认弹出全屏通话等待界面。开启后先展示一个横幅,然后根据需要拉起全屏通话界面。

铃声设置

您可通过以下方式设置默认铃声、来电静音模式、离线推送铃声:
设置默认铃声(方式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);
详情:开启后,收到通话请求,不会播放来电铃声。
自定义离线推送铃声:离线推送默认铃声是由系统决定的,可以在 手机设置 中,进入应用详情,查看或更改应用的通知铃声。
离线通知铃声仅支持以下厂商自定义:华为、小米、FCM 和 APNs,其他厂商暂不支持。离线推送铃声设置详见:华为、小米、FCM(通知消息)自定义推送铃声 以及 FCM(数据消息)自定义来电铃声

自定义您的 UI

替换图标按钮

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

隐藏按钮

调用 disableControlButton 接口可以隐藏特定的按钮。以隐藏摄像头按钮为例:
disableControlButton
Android(Kotlin)
Android(Java)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit
import com.tencent.qcloud.tuikit.tuicallkit.common.data.Constants

TUICallKit.createInstance(context).disableControlButton(Constants.ControlButton.Camera)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;
import com.tencent.qcloud.tuikit.tuicallkit.common.data.Constants;

TUICallKit.createInstance(context).disableControlButton(Constants.ControlButton.Camera);
参数
类型
说明
disableButton
ControlButton
需要隐藏的按钮。
说明:
目前支持隐藏以下按钮:
Camera(摄像头)、Microphone(麦克风)、AudioDevice(音频设备)、SwitchCamera(切换摄像头)、InviteUser(邀请用户)。
v3.2.+ 版本支持。

常见问题

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

交流与反馈

如果您在使用过程中,有什么建议或者意见,可以联系我们,感谢您的反馈。