Android SDK 接入指南
一、安装开发工具
安装 & 配置 Android Studio
MacOS | Windows | |
|---|---|---|
教学链接 |
二、依赖安装
1. 安装依赖
运行的时候,自动安装依赖
2. 依赖说明
配置文件路径:app/build.gradle.kts
外部引入的依赖 | ||
分类 | 依赖坐标 | 说明 |
网络通信 | com.squareup.okhttp3:okhttp:5.1.0 | HTTP 客户端 |
io.socket:socket.io-client:2.1.0 | WebSocket 通信 | |
数据处理 | com.google.code.gson:gson:2.13.1 | JSON 解析 |
org.msgpack:msgpack-core:0.9.3 | 图片加载库 | |
图片加载 | javax.vecmath:vecmath:1.5.2 | 向量数学库 |
本地 SDK | xmovdigitalhuman-v0.0.1.aar | 数字人 SDK |
Android 自带的依赖 | ||
分类 | 依赖坐标 | 说明 |
AndroidX 核心 | androidx.appcompat:appcompat:1.7.1 | 兼容库 |
androidx.core:core-ktx:1.10.1 / 1.17.0 | Kotlin 扩展 | |
androidx.activity:activity:1.11.0 | Activity 组件 | |
androidx.preference:preference:1.2.0 | 设置界面 | |
UI 组件 | androidx.constraintlayout:constraintlayout:2.2.1 | 约束布局 |
com.google.android.material:material:1.13.0 | Material Design | |
测试框架 | junit:junit:4.13.2 | 单元测试 |
androidx.test.ext:junit:1.3.0 | Android 测试 | |
androidx.test.espresso:espresso-core:3.5.1 | UI 测试 | |
三、调试与运行
1. 模拟器
Step 1

Step 2

Step 3

2. 真机
真机测试


四、打包
1. 环境准备
本项目需要安装 JDK 11 或更高版本。

为了获得最佳的构建兼容性,推荐使用 Java 17 或 Java 21。
如果未安装 JDK,可参考以下教程:
2. 基础机制
打包流程主要通过执行项目根目录下的 ./gradlew 脚本完成。该脚本会自动下载并匹配项目所需的 Gradle 版本,无需手动配置 Gradle 环境。
3. 打包流程
1. 定位目录:在终端中,确保当前路径已定位至项目根目录。
2. 执行指令:输入以下命令开始打包:
./gradlew bundleRelease
4. 输出文件位置
构建命令执行成功后,终端会显示 "BUILD SUCCESSFUL"。此时生成的发布包位于项目的 build 目录下。
文件路径:app/build/outputs/apk/release/

5. 常见问题与注意事项
1. 权限问题 如果您在打包时遇到 Permission denied 或类似权限问题,请先在终端执行以下命令赋予脚本执行权限:
chmod +x gradlew
2. 最佳实践
编译清理:建议在打包 Release 版本前先执行 clean 指令,确保包体内不包含旧代码缓存。
多任务合并:您可以一次性执行清理和打包,命令如下:
./gradlew clean assembleRelease
五、语音与大模型引擎替换
只针对带唤醒的demo工程
1. 唤醒词
更换唤醒词,需要提供讯飞的 sdk 包
1. 解压讯飞唤醒sdk的压缩包,在项目源码中替换 ivw 中的 xxx.jet 文件
2. 代码中需要修改唤醒词字符串匹配规则

2. 换LLM
1. 更换对应 llm 厂商的 apikey,defaultMode, defaultPointID (豆包)

2. 重新实现 llm 流式返回实现

3. 换 ASR
1. asr 厂商的一些常量设置

2. 代码实现

六、Config 配置
在进行初始化时,initConfig 中的 config 是一个json 字符串,可以定制化做一些配置
1. Config 介绍
字段名 | 数据类型 | 说明 | 默认值 | 示例值 |
input_audio | boolean | 是否开启自己的音频输入true为开启,false为关闭(sdk内部的音频输入) | false | false |
output_audio | boolean | 是否开启SDK内音频输出true为使用sdk内部音频输出false不使用sdk内部音频输出 | true | true |
max_reconnect_count | Int | 最大重连次数(默认5次)断网情况下会切换到离线模式,当sdk检测到有网会进行重连 | 5 | 5 |
render_time_out | Int | 视频渲染超时阈值(默认15秒) | 15 | 15 |
resolution | JSONObject | 分辨率配置对象,用于定义画面的宽高参数(跟随角色分辨率保持一致) | {"height": 1920, "width": 1080} | {"height": 1920, "width": 1080} |
resolution.height | number | 画面高度,单位为像素(px) | 1920 | 1920 |
resolution.width | number | 画面宽度,单位为像素(px) | 1080 | 1080 |
layout | LayoutConfig | 数字人布局配置结构化对象 |
2. LayoutConfig 介绍
(1)container(容器配置)
字段名 | 数据类型 | 说明 | 默认值 | 示例值 |
size | Int[] | 容器尺寸,数组第一位为宽度,第二位为高度 | [1080, 1920] |
(2)avatar(数字人布局配置)
注意:align需要容器为约束布局ConstraintLayout 类型生效
字段名 | 数据类型 | 取值范围 | 说明 | 默认值 | 示例值 |
v_align | string | "top" "middle" "bottom" | 数字人在容器内的垂直对齐方式(vertical align),控制数字人在容器垂直方向的位置(容器为约束布局ConstraintLayout 类型生效) | "middle" | "middle" |
h_align | string | "left" "center" "right" | 数字人在容器内的水平对齐方式(horizontal align),控制数字人在容器水平方向的位置(容器为约束布局ConstraintLayout 类型生效) | "center" | "center" |
scale | Float | >0 | 数字人缩放比例,1 为原始尺寸,0.5 为缩小至 50%,大于 1 为放大 | 1 | 0.5 |
offset_x | number | 任意数值 | 数字人在水平对齐基础上的偏移量(正数向右,负数向左) | 0 | 20 |
offset_y | number | 任意数值 | 数字人在垂直对齐基础上的偏移量(正数向下,负数向上) | 0 | 20 |
3. 配置示例
{
"max_reconnect_count": 5,
"render_time_out": 12,
"input_audio": false,
"output_audio": true,
"resolution": {
"width": 1080,
"height": 1920
},
"layout": {
"container": {
"size": [1080, 1920]
},
"avatar": {
"h_align": "center",
"v_align": "middle",
"scale": 1,
"offset_x": 0,
"offset_y": 0
}
}
}