客户端渲染 Android SDK 接口说明

最近更新时间:2024-10-16 10:17:51

我的收藏

一、集成步骤

1. 在项目中使用时,您需要把 ivhfilamentsdk-release-X.X.X.aar (X.X.X请替换为实际最新版本号) 放入 App 模块下的 libs 文件夹中,并在 build.gradle 文件中添加导入。
implementation files('libs/ivhfilamentsdk-release-X.X.X.aar')
2. ivhfilamentsdk 强依赖于 okhttp3 库,您需要手动将相关依赖导入。
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
3. 在项目的proguard-rules.pro中添加如下混淆规则:
-keep class com.google.android.filament.proguard.UsedBy*
-keep @com.google.android.filament.proguard.UsedBy* class * {
<init>();
}
-keepclassmembers class * {
@com.google.android.filament.proguard.UsedBy* *;
}
-keep class com.google.android.filament.utils.** { *; }
-keepclassmembers class com.google.android.filament.utils.** { *; }
4. 在 app/src/main/AndroidManifest.xml 文件中添加如下代码,获取相应的设备权限。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
5. 在需要插入数智人渲染的 layout 布局中添加数智人端渲染组件。
<com.tencent.ivhfilamentsdk.Ivh
android:id="@+id/ivh"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
6. 在 Activity 中获取自定义组件,传入自己项目的模型及项目信息配置等进行初始化。
var mIvh = findViewById(R.id.ivh)
var mIvhParams = IvhParams()
mIvhParams.modelPath = "xx.glb"
mIvhParams.configPath = "xx.json"
mIvhParams.appkey = "xxx"
mIvhParams.accesstoken = "xxx"
mIvhParams.virtualmanProjectId = "xxx"
mIvh.init(mIvhParams,object : WebSocketListener(){ ...... })

二、接口说明

1. init(params: IvhParams, listener: WebSocketListener)

数智人端渲染初始化
params 说明
属性名称
必选
类型
说明
modelPath
String
本地 glb 模型的文件路径
configPath
String
本地 glb 模型配置的文件路径
appkey
String
数智人平台账号 appkey
accesstoken
String
数智人平台账号 accesstoken
virtualmanProjectId
String
数智人项目 id
httpOrigin
String
自定义时指定http协议的域名
wsOrigin
String
自定义时指定socket协议的域名
isIntellAction
Boolean
是否开启智能动作,默认开启
listener 说明
名称
类型
方法和说明
onOpen
void
onOpen(WebSocket webSocket, Response response)<br>当 WebSocket 已被远程方接受并可以开始传输消息时调用。
onMessage
void
onMessage(WebSocket webSocket, String text)<br>当收到文本(类型)消息时调用。
onClosing
void
onClosing(WebSocket webSocket, int code, String reason)<br>当远程方指示不再传输传入消息时调用。
onFailure
void
onFailure(WebSocket webSocket, Throwable t, Response response)<br>当 WebSocket 因读取或写入网络时发生错误而关闭时调用。

2. on("事件名称",callback: (String,String) -> Unit)

目前支持的事件
事件名
说明
返回值
init
初始化结束
init,end
action
动作执行情况
动作名,start/end
mouth
口型播报状态
mouth,start/end。
sentence
分句事件
seqNo,start/end。(非离线才有)
error
发生异常
错误类型,相关详情
debug
返回请求耗时
返回socket/http请求的耗时,单位ms

3. getAnimationList(): Array<String>

获取当前模型的动作列表

4. playAction(String)

播放指定动作,传入执行的动作名称

5. playActions(Array<String>)

播放指定的一组动作
PS:批量执行动作需要关闭智能动作,以防智能动作打乱指定动作的播放顺序

6. stopAction()

如果当前动作不是静默,会停止动作切回静默

7. enableAudio()

启用音频播放,默认开启

8. disableAudio()

禁用音频播报

9. stop()

停止播报文本 + 动作

10. setPosition(x: Float,y: Float,z: Float)

位置调整,xyz 轴的位置

11. setRotationAngle(deg: Float)

设置旋转角度

12. getActionConfig(key: String,callback: (String?) -> Unit )

获取场景指令配置 key 是交互平台里配置的场景指令标识,callback 返回是 json 形式的字符串,如果获取不到为空

13. getRotationAngle(): Float

获取当前模型已经旋转的角度

14. getActionConfig(key: String,callback: (String?) -> Unit )

根据给定的 key,获取交互平台里配置的场景指令信息。如果获取不到,返回空

15. play(text: String, option: MutableMap<String, *>?)

驱动文本/对话
text 针对option里的driverType类型说明
driverType取值
text
text
要驱动的文本, 支持 ssml 标签
stream_text
要驱动的流式文本, 不支持 ssml 标签, 支持 markdown 语法
chat
提问的文本
option 说明
属性名称
必选
类型
说明
driverType
String
text:文本驱动, stream_text:流式文本驱动, chat: 对话
streamId
String
32 位 uuid, 不带"-", 大模型多端同步记录的话, 需要自己传入
seq
Int
当为流式驱动时,必传。从 1 开始
isFinal
Boolean
当为流式驱动时,必传。为 true 代表流式结束

16. playOffline()

离线时口型固定循环播放

17. stopOffline()

离线口型循环停止