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

准备工作
环境要求
Android 版本要求:Android 5.0(SDK API Level 21)及以上版本。
Gradle 版本要求:Gradle 4.2.1 及以上的版本。
设备需满足:Android 5.0 及以上的手机设备。
开通服务
快速接入
步骤1:导入组件

步骤2:工程配置
1. 在工程根目录下找到
settings.gradle.kts(或settings.gradle)文件,在其中增加如下代码,导入tuicallkit-kt组件到项目中。include(":tuicallkit-kt")
include ':tuicallkit-kt'
2. 在 app 目录下找到 
build.gradle.kts(或build.gradle) 文件,在dependencies 中增加如下代码,声明当前 app 对组件的依赖。dependencies {api(project(":tuicallkit-kt"))}
dependencies {api project(':tuicallkit-kt')}
说明:
TUICallKit 工程内部已经默认依赖:
TRTC SDK、IM SDK、tuicallengine 以及公共库 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<applicationandroid: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
import com.tencent.qcloud.tuicore.TUILoginimport com.tencent.qcloud.tuicore.interfaces.TUICallbackimport com.tencent.qcloud.tuikit.tuicallkit.debug.GenerateTestUserSigclass MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)val userId = "denny" // 请替换为您的UserIdval sdkAppId = 0 // 请替换为在控制台得到的SDKAppIDval secretKey = "****" // 请替换为在控制台得到的SecretKeyval 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 {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);String userId = "denny"; // 请替换为您的UserIdint sdkAppId = 0; // 请替换为第一步在控制台得到的SDKAppIDString secretKey = "****"; // 请替换为第一步在控制台得到的SecretKeyString userSig = GenerateTestUserSig.genTestUserSig(userId, sdkAppId, secretKey);TUILogin.login(this, sdkAppId, userId, userSig, new TUICallback() {@Overridepublic void onSuccess() {}@Overridepublic void onError(int errorCode, String errorMessage) {}});}}
参数  | 类型  | 说明  | 
userId  | String  | 只允许包含大小写英文字母(a-z A-Z)、数字(0-9)及下划线和连词符。  | 
sdkAppId  | int  | |
secretKey  | String  | |
userSig  | String  | 一种安全保护签名,用于对用户进行登录鉴权认证,确认用户是否真实,阻止恶意攻击者盗用您的云服务使用权。  | 
说明:
开发环境:如果您在本地开发调试阶段,可以采用本地 
GenerateTestUserSig.genTestSig函数生成 userSig。该方法中 secretKey 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量。生产环境:如果您的项目要发布上线,请采用 服务端生成 UserSig 的方式。
步骤4:设置昵称和头像[可选]
setSelfInfo
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKitval 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
import com.tencent.cloud.tuikit.engine.call.TUICallDefineimport com.tencent.qcloud.tuikit.tuicallkit.TUICallKitval userIdList = mutableListOf<String>()userIdList.add("mike")val mediaType = TUICallDefine.MediaType.Audioval 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
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKitTUICallKit.createInstance(this).enableFloatWindow(true)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;TUICallKit.createInstance(this).enableFloatWindow(true);
详情:默认为false,通话界面左上角的悬浮窗按钮隐藏,设置为 true 后显示。
开启来电横幅
您可以通过调用 enableIncomingBanner 开启/关闭来电横幅显示,该功能默认为关闭状态(false)。当被叫端收到来电时,默认展示全屏通话等待界面。启用此功能后,将首先显示一个横幅通知,然后根据需要切换到全屏通话界面。请注意,显示来电横幅需要授予悬浮权限,具体的显示策略将根据权限设置及应用当前是否在前台或后台运行来决定,具体策略可参考:被叫端来电显示策略。

enbalecomingBanner
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKitTUICallKit.createInstance(context).enableIncomingBanner(true)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;TUICallKit.createInstance(context).enableIncomingBanner(true);
详情:默认为 false,被叫端收到邀请后默认弹出全屏通话等待界面。开启后先展示一个横幅,然后根据需要拉起全屏通话界面。
铃声设置
您可通过以下方式设置默认铃声、来电静音模式、离线推送铃声:
设置默认铃声(方式2):通过 setCallingBell 接口设置被叫端收到的来电铃声。
setCallingBell
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKitval 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
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKitTUICallKit.createInstance(context).enableMuteMode(true)
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;TUICallKit.createInstance(context).enableMuteMode(true);
详情:开启后,收到通话请求,不会播放来电铃声。
自定义离线推送铃声:离线推送默认铃声是由系统决定的,可以在 手机设置 中,进入应用详情,查看或更改应用的通知铃声。
自定义您的 UI
替换图标按钮
常用图标文件名列表
图标  | 文件名称  | 说明  | 
 ![]()  | tuicallkit_ic_dialing.png  | 接听来电图标  | 
![]()   | tuicallkit_ic_hangup.png  | 挂断通话图标  | 
![]()   | tuicallkit_ic_mic_unmute.png  | 关闭麦克风图标  | 
![]()   | tuicallkit_ic_handsfree_disable.png  | 关闭扬声器图标  | 
![]()   | tuicallkit_ic_camera_disable.png  | 关闭摄像头图标  | 
![]()   | tuicallkit_ic_add_user_black.png  | 通话过程中邀请用户图标  | 
隐藏按钮
disableControlButton
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKitimport com.tencent.qcloud.tuikit.tuicallkit.common.data.ConstantsTUICallKit.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.+ 版本支持。





