Android SDK 接入指南

一、安装开发工具

安装 & 配置 Android Studio


MacOS

Windows

教学链接

Mac Android Studio 安装配置教程

Windows Android Studio 安装配置教程

二、依赖安装

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 17Java 21

如果未安装 JDK,可参考以下教程:

JDK 17 安装教程

JDK 21 安装教程

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
}
}
}