快速集成(Android)

最近更新时间:2025-09-29 21:07:52

我的收藏

功能预览

通过集成 AIConversationKit 组件,您可为产品快速集成前沿的 AI 对话能力,实现流畅自然的智能交互体验,显著提升用户活跃度与满意度。
AI 倾听界面
AI 对话界面





准备工作

开通服务

使用 AIConversationKit 前,请先参考 开通服务文档,领取体验版或开通付费版。

环境要求

系统版本:最低兼容 Android 4.4(API Level 19),推荐 Android 5.0+(API Level 21+)
开发环境:Android Studio 3.5+(Gradle 3.5.4+)
设备要求:Android 4.4+ 的真机设备

代码集成

获取 AIConversationKit 组件

GitHub 克隆/下载代码,将Android/aiconversationkit目录复制到您的工程中(与 app 目录同级)。


工程配置

1. 在工程根目录的settings.gradle(或 settings.gradle.kts)文件中添加以下代码,它的作用是将aiconversationkit组件导入到您当前的项目中。
settings.gradle
settings.gradle.kts
include ':aiconversationkit'
include (":aiconversationkit")
2. 在 app 目录的build.gradle(或 build.gradle.kts)文件中添加以下代码,它的作用是声明当前app对新加入的aiconversationkit组件的依赖。
build.gradle
build.gradle.kts
api project(':aiconversationkit')
api(project(":aiconversationkit"))
3. 在 proguard-rules.pro 文件中添加以下代码,因为我们在 SDK 内部使用了Java 的反射特性,需要将 SDK 的部分类加入不混淆名单。
-keep class com.tencent.** { *; }
4. 为了防止编译时,AndroidManifest合并过程中产生属性冲突,您需要在 app/src/main/AndroidManifest.xml 文件的 <application> 节点中,添加 tools:replace="android:allowBackup"android:allowBackup="false",用以覆盖组件内的设置。
// app/src/main/AndroidManifest.xml
<application
android:name=".DemoApplication"
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">

完成登录

在您的项目中添加登录代码,这是使用 AIConversationKit 各项功能的关键前提:
Kotlin
Java
val userId = "denny" // 请替换为您的 UserID
val sdkAppId = 1400000001 // 请替换为开通服务控制台的 SDKAppID
val sdkSecretKey = "xxxx" // 请替换为开通服务控制台的 SDKSecretKey
val userSig = GenerateTestUserSig.genTestUserSig(sdkAppId, userId, sdkSecretKey)
TUILogin.login(this, sdkAppId, userId, userSig, object : TUICallback() {
override fun onSuccess() {}

override fun onError(errorCode: Int, errorMessage: String) {}
})
String userId = "denny"; // 请替换为您的 UserID
int sdkAppId = 1400000001; // 请替换为开通服务控制台的 SDKAppID
String sdkSecretKey = "xxxx"; // 请替换为开通服务控制台的 SDKSecretKey
String userSig = GenerateTestUserSig.genTestUserSig(sdkAppId, userId, sdkSecretKey);
TUILogin.login(this, sdkAppId, userId, userSig, new TUICallback() {
@Override public void onSuccess() {}

@Override public void onError(int errorCode, String errorMessage) {}
});
登录接口参数说明
参数
类型
说明
SDKAppID
Int
UserID
String
当前用户的唯一 ID,仅包含英文字母、数字、连字符和下划线。
userSig
String
用于腾讯云鉴权的票据。请注意:
开发环境:您可以采用本地 GenerateTestUserSig.genTestSig 函数生成 UserSig 或者通过 UserSig 辅助工具 生成临时的 UserSig。
生产环境:为了防止密钥泄露,请务必采用服务端生成 UserSig 的方式。详细信息请参见 服务端生成 UserSig
更多信息请参见 如何计算及使用 UserSig

开始您的第一次 AI 对话

登录成功后,使用以下代码发起 AI 对话:
Kotlin
Java
val startParams = AIConversationDefine.StartAIConversationParams()

val sdkAppId = 1400000001 // 1、替换 sdkAppId
val sdkSecretKey = "xxxx" // 2、替换 sdkSecretKey
val aiRobotId = "robot_" + TUILogin.getUserId()
val aiRobotSig = GenerateTestUserSig.genTestUserSig(sdkAppId, aiRobotId, sdkSecretKey)
startParams.agentConfig = AIConversationDefine.AgentConfig.generateDefaultConfig(aiRobotId, aiRobotSig)

startParams.secretId = "xxx" // 3、替换 secretId
startParams.secretKey = "xxx" // 4、替换 secretKey

// 5、替换 llmConfig
startParams.llmConfig = "{\\"LLMType\\":\\"openai\\",\\"Model\\":\\"hunyuan-turbo-latest\\",\\"SystemPrompt\\":\\"你是一个私人助手\\",\\"APIUrl\\":\\"https:xxx\\",\\"APIKey\\":\\"xxx\\",\\"History\\":5,\\"Streaming\\":true}"
// 6、替换 ttsConfig
startParams.ttsConfig = "{\\"TTSType\\":\\"tencent\\",\\"AppId\\":\\"xxx\\",\\"SecretId\\":\\"xxx\\",\\"SecretKey\\":\\"xxx\\",\\"VoiceType\\":\\"502001\\",\\"Speed\\":1.25,\\"Volume\\":5,\\"PrimaryLanguage\\":1,\\"FastVoiceType\\":\\"\\"}"

val intent = Intent(this, AIConversationActivity::class.java)
intent.putExtra(KEY_START_AI_CONVERSATION, startParams)
startActivity(intent)
AIConversationDefine.StartAIConversationParams startParams = new AIConversationDefine.StartAIConversationParams();

int sdkAppId = 1400000001; // 1、替换 sdkAppId
String sdkSecretKey = "xxxx"; // 2、替换 sdkSecretKey
String aiRobotId = "robot_" + TUILogin.getUserId();
String aiRobotSig = GenerateTestUserSig.genTestUserSig(sdkAppId, aiRobotId, sdkSecretKey);
startParams.agentConfig = AIConversationDefine.AgentConfig.generateDefaultConfig(aiRobotId, aiRobotSig);

startParams.secretId = "xxx"; // 3、替换 secretId
startParams.secretKey = "xxx"; // 4、替换 secretKey

// 5、替换 llmConfig
startParams.llmConfig = "{\\"LLMType\\":\\"openai\\",\\"Model\\":\\"hunyuan-turbo-latest\\",\\"SystemPrompt\\":\\"你是一个私人助手\\",\\"APIUrl\\":\\"https:xxx\\",\\"APIKey\\":\\"xxx\\",\\"History\\":5,\\"Streaming\\":true}";
// 6、替换 ttsConfig
startParams.ttsConfig = "{\\"TTSType\\":\\"tencent\\",\\"AppId\\":\\"xxx\\",\\"SecretId\\":\\"xxx\\",\\"SecretKey\\":\\"xxx\\",\\"VoiceType\\":\\"502001\\",\\"Speed\\":1.25,\\"Volume\\":5,\\"PrimaryLanguage\\":1,\\"FastVoiceType\\":\\"\\"}";

Intent intent = new Intent(this, AIConversationActivity.class);
intent.putExtra(KEY_START_AI_CONVERSATION, startParams);
startActivity(intent);
1. SDKAppId 和 SDKSecretKey 使用 完成登录 获取的数据即可。
2. 使用 Playground 配置 AI 对话参数,包括基础配置、STT、LLM、TTS;然后点击右下角的快速跑通,切换到 Android,获取 SecretId、SecretKey 和 Config 参数。

3. 将云 API 的 SecretId 和 SecretKey 复制到startParams.secretIdstartParams.secretKey中。
4. 将 Config 信息复制到 Json 解析工具中,例如 JSONUtil,将 LLMConfig 对应的字符串值复制到startParams.llmConfig,将 TTSConfig 对应的字符串值复制到startParams.ttsConfig中。
说明:
开发环境:如果您正在本地开发调试阶段,可以采用上述方式快速集成 AI 对话。该方法中账号信息很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量。
生产环境:如果您的项目要发布上线,请将上述账号信息保存到服务端中,避免流量被盗用;相关对话配置,也可以保存到服务端中,方便动态调整 AI 对话效果。

调节对话效果

为了在 AI 对话中获得最佳体验,清晰的声音采集至关重要。我们提供多种参数设置,帮助您在不同环境下都能获得清晰的语音交互效果。

vadLevel 远场人声抑制

在多人交谈的环境中,其他人声可能会干扰 AI 对您声音的识别。通过调整人声抑制级别,我们可以有效过滤环境中的其他人声干扰,让 AI 更准确地专注于您的语音;您可以通过设置 startParams 中的 sttConfig.vadLevel 参数来达到期望的效果。
级别
效果描述
使用场景
0
关闭远场人声抑制功能
在嘈杂环境下 AI 容易被噪声打断,可能导致无法正常对话。
1
开启轻度抑制模式
适合相对安静的环境使用,例如家庭、图书馆。
2
推荐默认设置
适用于大多数日常场景(默认值)。
3
开启强力抑制模式
适合嘈杂环境使用,例如菜市场、车站。
代码配置示例
Kotlin
Java
val startParams = AIConversationDefine.StartAIConversationParams()
startParams.sttConfig.vadLevel = 3

val intent = Intent(this, AIConversationActivity::class.java)
intent.putExtra(KEY_START_AI_CONVERSATION, startParams)
startActivity(intent)
AIConversationDefine.StartAIConversationParams startParams = new AIConversationDefine.StartAIConversationParams();
startParams.sttConfig.vadLevel = 3;

Intent intent = new Intent(this, AIConversationActivity.class);
intent.putExtra(KEY_START_AI_CONVERSATION, startParams);
startActivity(intent);

interruptMode 打断模式

根据您的使用习惯,可以设置不同的打断方式,在 AI 说话时进行打断,使对话交互更加自然流畅;您可以通过设置 startParams 中的 agentConfig.interruptMode 参数来达到期望的效果。
模式
功能描述
适用场景
0
智能模式
AI 正在说话时,可通过点击屏幕或用户说话打断;(默认值)
1
手动打断
AI 正在说话时,只能通过点击屏幕打断;
代码配置示例
Kotlin
Java
val startParams = AIConversationDefine.StartAIConversationParams()
startParams.agentConfig.interruptMode = 1

val intent = Intent(this, AIConversationActivity::class.java)
intent.putExtra(KEY_START_AI_CONVERSATION, startParams)
startActivity(intent)
AIConversationDefine.StartAIConversationParams startParams = new AIConversationDefine.StartAIConversationParams();
startParams.agentConfig.interruptMode = 1;

Intent intent = new Intent(this, AIConversationActivity.class);
intent.putExtra(KEY_START_AI_CONVERSATION, startParams);
startActivity(intent);

language 语言识别

根据说话者使用的语言进行设置,AI 才能准确地将语音转换成对应的文字内容;您可以通过设置 startParams 中的 sttConfig.language 参数来达到期望的效果。
语言代码
语言名称
说明
"zh"
中文
支持普通话识别 (默认值)
"en"
英语
支持英语识别
更多支持的语言,请参考 STTConfig 官方文档。
代码配置示例
Kotlin
Java
val startParams = AIConversationDefine.StartAIConversationParams()
startParams.sttConfig.language = "en"

val intent = Intent(this, AIConversationActivity::class.java)
intent.putExtra(KEY_START_AI_CONVERSATION, startParams)
startActivity(intent)
AIConversationDefine.StartAIConversationParams startParams = new AIConversationDefine.StartAIConversationParams();
startParams.sttConfig.language = "en";

Intent intent = new Intent(this, AIConversationActivity.class);
intent.putExtra(KEY_START_AI_CONVERSATION, startParams);
startActivity(intent);

定制您的 UI

文案定制

AIConversationKit 用到的所有文案都存放于 res/values/strings.xml 和 res/values-zh/strings.xml 中,部分示例如下,您可以根据您的诉求来替换文件下的文案。
语言索引
中文
英文
详细描述
conversation_ai_state_listening
我在听…
Listening…
表示 AI 正在倾听您的问题
conversation_ai_state_thinking
思考中…
Thinking…
表示 AI 正在思考您的问题
conversation_close_speaker
关扬声器
Turn off
关闭扬声器播放 AI 语音
conversation_mic_mute
静音
Mute
表示暂停倾听本地语音
conversation_hang_up
挂断
Hang up
表示结束和 AI 的对话
如果您需要修改中文界面文案,请在 res/values-zh/strings.xml 文件中更新对应的文本内容即可。
<resources>
<string name="conversation_ai_state_listening">倾听中…</string>
<string name="conversation_ai_state_thinking">让我想想…</string>
<string name="conversation_mic_mute">闭麦</string>
<string name="conversation_close_speaker"> 关免提</string>
<string name="conversation_hang_up">结束</string>
</resources>
最终效果:


图标定制

AIConversationKit 用到的所有图标都存放于 res/drawable-xxhdpi 目录下, 部分示例如下,您可以根据您的诉求来替换目录下的图标。
图标路径
图标样式
详细描述
conversation_ic_ai_robot

AI 机器人的头像
conversation_ic_local_avatar_internal

本地用户的头像
conversation_ic_speaker_state_close

手机外放声音不使用扬声器
conversation_ic_audio_state_mute

本地 Mic 被静音时的图标
conversation_ic_hang_up

结束和 AI 的对话
最终效果:


布局调整

AIConversationKit 主界面布局文件为 conversation_activity_ai_conversation_main.xml,您可根据实际需求进行以下调整:
1. 灵活调整布局:支持自由修改各 View 的尺寸与位置,所有组件均为独立模块,可任意组合搭配。
2. 移除不需要的视图:若存在冗余 View,可直接删除以优化布局。
例如,可选择移除 AI 动画组件 AISpeechAnimationView,从而为 AI 字幕区域 AISpeechTextView 释放更多显示空间。
// 将这部分代码直接删除,即可移除 AI 动画组件
<com.trtc.uikit.aiconversationkit.view.conversation.AISpeechAnimationView
android:id="@+id/conversation_vv_ai_animation"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/conversation_cl_local_panel"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/conversation_iv_ai_robot" />
最终效果:


常见问题

每次进房都需要调用登录吗?

不需要。通常您只需要完成一次 TUILogin.login 调用即可,建议将 TUILogin.loginTUILogin.logout 与自己的登录业务关联。

集成代码后产生如下图所示编译报错 allowBackup 异常,如何处理?




问题原因:多个模块的 AndroidManifest.xml 中都配置了 allowBackup 属性 ,造成冲突。
解决方法
1. 在工程的 AndroidManifest.xml 文件中删除 allowBackup 属性或将该属性改为 false,表示关闭备份和恢复功能;
2. AndroidManifest.xml文件的 application 节点中添加 tools:replace="android:allowBackup",表示覆盖其他模块的设置,使用您自己的设置;




集成代码后还需要添加麦克风等权限的声明吗?

不需要,AIConversationKit 中已经内置了麦克风等权限的声明,在接入过程中您无需再关心这些权限的声明。