tencent cloud

腾讯特效 SDK

动态与公告
产品动态
关于腾讯特效 SDK V3.5 版本更新公告
关于腾讯特效 SDK V3.0 版本相关接口及素材变更公告
产品简介
产品概述
产品功能
基本概念
产品优势
应用场景
购买指南
价格总览
购买流程
欠费退费说明
新手指引
Demo 体验
免费测试
License 指引
移动端 License 新增与续期
PC 端 License 新增与续期
Web端 License 新增与续期
常见问题
SDK 下载
功能说明
SDK 下载
版本历史
SDK 集成指引(无 UI)
通用集成腾讯特效
原子能力集成指引
SDK 集成指引(含 UI)
通用集成腾讯特效
直播 SDK 集成腾讯特效
TRTC SDK 集成腾讯特效
短视频 SDK 集成腾讯特效
Avatar 虚拟人集成指引
API 文档
iOS
Android
Flutter
Web
功能实践
SDK 包瘦身
SDK 集成问题排查
性能调优
效果调优
素材使用
美颜参数说明
美颜场景推荐参数
短视频企业版迁移指引
第三方推流接入美颜(Flutter)
小程序美颜特效实践
素材制作工具使用
Web 美颜特效
产品概述
快速上手
SDK 接入
API 文档
控制台指南
Demo 体验
内置素材总览
实践教程
常见问题
常见问题
通用类相关
技术类相关
License 相关
旧版文档
美颜场景推荐参数
美颜参数表
一分钟集成 TRTC
一分钟集成直播
TE SDK 政策
隐私协议
数据处理和安全协议
联系我们

快速接入 Avatar

PDF
聚焦模式
字号
最后更新时间: 2023-05-18 10:33:12
由于 Avatar 只是腾讯特效的部分功能,所以在接入时需参考 腾讯特效接入文档,将 SDK 集成到您的项目之中。然后按照下文的方法添加 Avatar UI、加载 Avatar 素材。
1. 按照腾讯特效文档进行接入,请参见 独立集成腾讯特效
2. 按照如下方法加载 Avatar 素材。

使用 Avatar 功能具体步骤

步骤1:复制 Demo 中的文件

1. 在官网下载对应的 demo工程,并解压。
2. 添加 avatar 资源:联系我们进行 Avatar 资源签发,然后将签发的资源复制到工程中(和 Demo 位置保持一致demo/app/assets/MotionRes/avatarRes 下)。由于 Demo 中的 demo/app/assets/MotionRes/avatarRes 下的 avatar 资源是加密授权过的,所以客户无法直接使用。
3. 复制 Demo 中 com.tencent.demo.avatar 文件夹下的所有类到您的工程中。

步骤2:添加关键代码

参考 Demo 中的 com.tencent.demo.avatar.AvatarEditActivity 类,添加如下代码。
1. 在页面的 xml 文件文件中配置面板信息:
<com.tencent.demo.avatar.view.AvatarPanel
android:id="@+id/avatar_panel"
android:layout_width="match_parent"
android:layout_height="300dp"
app:layout_constraintBottom_toBottomOf="parent" />
2. 在页面中获取面板对象并设置对应的数据回调接口:
avatarPanel.setAvatarPanelCallBack(new AvatarPanelCallBack() {
@Override
public void onReceiverBindData(List<AvatarData> avatarData) {
mXMagicApi.updateAvatar(avatarData, AvatarEditActivity.this);
}
@Override
public void onItemChecked(MainTab mainTab, AvatarItem avatarItem) {
if (avatarItem.avatarData == null && URLUtil.isNetworkUrl(avatarItem.downloadUrl)) { //此处表示要进行动态下载
downloadAvatarData(avatarItem, () -> updateConfig(avatarItem));
} else {
updateConfig(avatarItem);
List<AvatarData> bindAvatarData = AvatarResManager.getAvatarDataByBindData(avatarItem.bindData);
mXmagicApi.updateAvatar(bindAvatarData, AvatarActivity.this);
}
}

@Override
public void onItemValueChange(AvatarItem avatarItem) {
updateConfig(avatarItem);
}

@Override
public boolean onShowPage(AvatarPageInf avatarPageInf, SubTab subTab) {
if (subTab != null && subTab.items != null && subTab.items.size() > 0) {
AvatarItem avatarItem = subTab.items.get(0);
if (avatarItem.type == AvatarData.TYPE_SLIDER && avatarItem.avatarData == null && URLUtil.isNetworkUrl(avatarItem.downloadUrl)) { //此处表示要进行动态下载
downloadAvatarData(avatarItem, () -> {
if (avatarPageInf != null) {
avatarPageInf.refresh();
}
});
return false;
}
}
return true;
}

private void updateConfig(AvatarItem avatarItem) {
if (mXmagicApi != null && avatarItem != null) {
List<AvatarData> avatarConfigList = new ArrayList<>();
avatarConfigList.add(avatarItem.avatarData);
mXmagicApi.updateAvatar(avatarConfigList, AvatarActivity.this);
}
}
});
3. 获取面板数据,并设置给面板:
AvatarResManager.getInstance().getAvatarData(avatarResName, getAvatarConfig(), allData -> {
avatarPanel.initView(allData);
});
4. 创建 xmagicApi 对象,并加载捏脸资源:
protected void initXMagicAndLoadAvatar(String avatarConfig, UpdatePropertyListener updatePropertyListener) {
if (mXMagicApi == null && !isFinishing() && !isDestroyed()) {
WorkThread.getInstance().run(() - > {
synchronized(lock) {
if (isXMagicApiDestroyed) {
return;
}
mXMagicApi = XmagicApiUtils.createXMagicApi(getApplicationContext(), null);
AvatarResManager.getInstance().loadAvatarRes(mXMagicApi, avatarResName, avatarConfig == null ? getAvatarConfig() : avatarConfig, updatePropertyListener);
setAvatarPlaneType();
}
}, this.hashCode());
}
}
5. 保存 Avatar 属性,可参考 Demo 中的 saveAvatarConfigs 方法:
/**
* 保存用户设置的属性或者默认属性值
*/
public void onSaveBtnClick() {
//通过AvatarResManager的getUsedAvatarData获取用户配置的属性
List < AvatarData > avatarDataList = AvatarResManager.getUsedAvatarData(avatarPanel.getMainTabList());
//通过XmagicApi.exportAvatar方法将配置的属性转换为字符串
String content = XmagicApi.exportAvatar(avatarDataList);
//保存此字符串即可,下载使用时将此字符串设置给SDK的loadAvatarRes方法,即可恢复此形象
if (mXMagicApi != null) {
mXMagicApi.exportCurrentTexture(bitmap - > saveAvatarModes(bitmap, content));
}
}
6. 切换背景参考 Demo 中的背景面板:



7. 设置模型动画参考demo 中的互动页面







帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈