会话列表页 | 聊天页 | 音视频通话 |
![]() | ![]() | ![]() |
npx @tencent-rtc/trtc-agent-skills add --ide <您的 IDE>,将 trtc-agent-skills 安装到您本地 AI IDE 中(<您的 IDE> 可替换为 cursor、codebuddy、claude、codex,或使用 all 安装全部),辅助完成 TUIKit 集成。安装后,您可以直接向 AI 输入“集成 Android Chat”、“新增自定义消息类型”、“切换明暗主题”等需求,AI 将根据项目类型引导您完成代码接入、接口调用、UI 样式修改和测试数据生成等步骤。详情可参考 AI Coding Skills。git clone https://github.com/Tencent-RTC/TUIKit_Android.git
chat、call 和 atomic_x 文件夹整体复制到您的工程根目录下。复制完成后的目录结构如下:YourApplication/├── app/ # 您的应用模块├── atomic_x/ # 基础 UI 组件库├── call/ # 音视频通话组件│ └── tuicallkit-kt/├── chat/ # Chat 源码│ ├── demo/ # 示例工程│ └── uikit/ # Chat UIKit 组件库├── settings.gradle.kts└── build.gradle.kts
chat/ 目录下(chat/uikit 为 UIKit 组件库,chat/demo 为示例工程),其依赖的基础组件 atomic_x 与音视频通话组件 call/tuicallkit-kt 位于仓库根目录。模块目录可放在工程任意位置,只需在 settings.gradle.kts 中设置正确的相对路径即可。settings.gradle.kts 中引入对应模块(请按源码实际存放位置调整相对路径):// settings.gradle.ktsinclude(":atomic_x")project(":atomic_x").projectDir = file("${settingsDir.path}/atomic_x")include(":uikit")project(":uikit").projectDir = file("${settingsDir.path}/chat/uikit")include(":tuicallkit-kt")project(":tuicallkit-kt").projectDir = file("${settingsDir.path}/call/tuicallkit-kt")
// settings.gradleinclude ':atomic_x'project(':atomic_x').projectDir = new File(settingsDir, 'atomic_x')include ':uikit'project(':uikit').projectDir = new File(settingsDir, 'chat/uikit')include ':tuicallkit-kt'project(':tuicallkit-kt').projectDir = new File(settingsDir, 'call/tuicallkit-kt')
build.gradle.kts 中添加依赖:// app/build.gradle.ktsdependencies {implementation(project(":atomic_x"))implementation(project(":uikit"))implementation(project(":tuicallkit-kt"))}
// app/build.gradledependencies {implementation project(':atomic_x')implementation project(':uikit')implementation project(':tuicallkit-kt')}

LoginStore 的 login 接口,传入上文获取的 sdkAppID、userID、userSig 进行登录鉴权:import io.trtc.tuikit.atomicxcore.api.CompletionHandlerimport io.trtc.tuikit.atomicxcore.api.login.LoginStoreimport com.tencent.cloud.tuikit.engine.call.TUICallEngineimport com.tencent.cloud.tuikit.engine.common.TUICommonDefineLoginStore.shared.login(context,sdkAppID, // Int,控制台获取userID, // StringuserSig, // String,控制台或服务端生成object : CompletionHandler {override fun onSuccess() {// 登录成功TUICallEngine.createInstance(context).init(sdkAppID, userID, userSig,object : TUICommonDefine.Callback {override fun onSuccess() {// 初始化成功,可使用音视频通话能力}override fun onError(errCode: Int, errMsg: String) {// 初始化失败}})}override fun onFailure(code: Int, desc: String) {// 登录失败,可弹框报错}})
ChatPageView 展示和收发消息,通过 setup 传入 conversationID 即可。conversationID 的格式为:单聊 c2c_<对方 UserID>,群聊 group_<群 GroupID>。import android.content.Contextimport android.content.Intentimport android.os.Bundleimport androidx.appcompat.app.AppCompatActivityimport io.trtc.tuikit.chat.uikit.pages.ChatPageViewclass ChatActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)// conversationID 格式:单聊 "c2c_<对方 UserID>",群聊 "group_<群 GroupID>"val conversationID = intent.getStringExtra("conversationID") ?: returnval chatPageView = ChatPageView(this)chatPageView.setup(conversationID = conversationID)setContentView(chatPageView)}companion object {fun start(context: Context, conversationID: String) {context.startActivity(Intent(context, ChatActivity::class.java).apply {putExtra("conversationID", conversationID)})}}}
ChatPageView 封装好的聊天页 ChatActivity(带标题栏、未读角标、群事件处理等),可直接复用或参考其实现进行自定义:ChatActivity.start(context, conversationID)。TUICallEngine,即可在 TUIKit 组件中使用音视频通话功能。import com.tencent.cloud.tuikit.engine.call.TUICallEngineimport com.tencent.cloud.tuikit.engine.common.TUICommonDefine// 在步骤 2 的 LoginStore 登录成功回调中初始化 TUICallEngineTUICallEngine.createInstance(context).init(sdkAppID, userID, userSig,object : TUICommonDefine.Callback {override fun onSuccess() {// 初始化成功,可使用音视频通话能力}override fun onError(errCode: Int, errMsg: String) {// 初始化失败}})

com.tencentcloud.desk:aideskcustomer 包引入和配置,即可在您的应用中引入客服会话能力。int SDKAppID = 0; // 开通了智能客服 Desk 的应用 IDString userID = "";String userSig = "";// 上述三个参数, 可以和您登录腾讯云 IM 的保持一致, 也可以使用不同的应用和用户// 用户昵称。设置后,用户端转人工成功时,人工客服在工作台可见。您可将用户手机号,用户来源等信息写入昵称,长度限制500字节// 注意!设置后,即时通信 IM 同 userID 的昵称也会被更新// 如您不希望变更,请设置为 "" 或 nullString nickName = "";// 用户头像。设置后,用户端转人工成功时,人工客服在工作台可见// 注意!设置后,即时通信 IM 同 userID 的头像也会被更新// 如您不希望变更,请设置为 "" 或 nullString avatar = "";TencentAiDeskCustomer.getInstance().initWithProfile(context, SDKAppID, userID, userSig, nickName, avatar, new AIDeskCallback() {@Overridepublic void onSuccess() {startActivity(TencentAiDeskCustomer.getInstance().getCustomerServiceChatIntent(context));}@Overridepublic void onError(int code, String desc) {}});
settings.gradle.kts(或 settings.gradle) 和 app 模块的 build.gradle.kts(或 build.gradle) 文件中移除 tuicallkit-kt 依赖,并在 步骤 3 创建聊天界面 中关闭音视频通话开关,代码如下所示:val messageInputConfig = ChatMessageInputConfig(isShowAudioCall = false, // 关闭语音通话isShowVideoCall = false // 关闭视频通话)val chatPageView = ChatPageView(this)chatPageView.setup(conversationID = conversationID,messageInputConfig = messageInputConfig)

文档反馈