直播 SDK 集成 Beauty AR

SDK 集成

1. 集成 Beauty AR
2. 集成 TEBeautyKit
添加面板JSON文件(如果不使用默认面板可以不添加)
3. 集成 te_adapter_live
Maven依赖
aar依赖
在 dependencies 中添加 te_adapter_live库的依赖。
dependencies{
...
implementation 'com.tencent.mediacloud:te_adapter_live:版本号'
}
1. 下载 aar 文件(下载的是一个 zip 文件,解压即可得到 aar 文件)。
2. 添加下载的 te_adapter_live_xxxx.aar 文件到 app 工程 libs 目录下。
3. 打开 app 模块的 build.gradle 添加依赖引用:
dependencies{
...
implementation fileTree(dir: 'libs', include: ['*.jar','*.aar']) //添加 *.aar
}
Demo 工程可参考 MLVB Demo
注意:
运行代码需要在com.tencent.thirdbeauty.xmagic.LicenseConstant.java文件中添加您申请的License信息,并将App module 下的build.gradle中的applicationId 修改为您申请License时填写的包名。
由于依赖MLVB能力,所以需要在Debug module下找到 com.tencent.mlvb.debug.GenerateTestUserSig.java文件,并添加对应的LICENSEURL,LICENSEURLKEY,SDKAPPID,SECRETKEY。
美颜集成的主要代码参考:com.tencent.mlvb.thirdbeauty.ThirdBeautyActivity.java文件。

SDK 使用

第一步:设置面板 JSON 文件

请添加您在 TEBeautyKit 集成中的第三步 中添加到您工程中的 JSON 文件的路径,没有 JSON 文件则将路径设置为 null。
注意:
如果您不使用提供的美颜面板,请忽略这步操作。
TEPanelViewResModel resModel = new TEPanelViewResModel();
String combo = "S1_07"; //根据您的套餐进行设置,如果您的套餐没有包含某项功能,客户设置为null
resModel.beauty = "beauty_panel/"+combo+"/beauty.json";
resModel.lut = "beauty_panel/"+combo+"/lut.json";
resModel.beautyBody = "beauty_panel/"+combo+"/beauty_body.json";
resModel.motion = "beauty_panel/"+combo+"/motions.json";
resModel.lightMakeup = "beauty_panel/"+combo+"/light_makeup.json";
resModel.segmentation = "beauty_panel/"+combo+"/segmentation.json";
TEUIConfig.getInstance().setTEPanelViewRes(resModel);

第二步:鉴权和复制资源

注意:
资源复制是根据 SDK 的版本号进行的,所以同一个版本号的 SDK 只会成功复制一次资源。
TEBeautyKit.setupSDK(this.getApplicationContext(),LicenseConstant.mXMagicLicenceUrl,LicenseConstant.mXMagicKey, (i, s) -> {
if (i == LicenseConstant.AUTH_STATE_SUCCEED) {
runOnUiThread(() -> {
Intent intent = new Intent(MainActivity.this, ThirdBeautyActivity.class);
startActivity(intent);
}
} else {
Log.e(TAG, "te license check is failed,please checke ");
}
});

第三步:初始化 adapter 和添加面板

注意:
如果您不想使用提供的面板,可以不创建TEPanelView,自己组织美颜属性,调用TEBeautyKitsetEffect 设置美颜属性。
this.beautyLiveAdapter = new TEBeautyLiveAdapter(XmagicConstant.EffectMode.PRO, TEBeautyKit.getResPath());
//设置手机朝向
this.beautyLiveAdapter.notifyScreenOrientationChanged(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//设置相机是前置摄像头还是后置摄像头,以及是否编码镜像
this.beautyLiveAdapter.notifyCameraChanged(isFront, this.isEncoderMirror);


private void initBeautyPanelView() {
RelativeLayout panelLayout = findViewById(R.id.live_pusher_bp_beauty_panel);
this.tePanelView = new TEPanelView(this);
if (lastParamList != null) { //用于恢复美颜上次效果
this.tePanelView.setLastParamList(lastParamList);
}
this.tePanelView.showView(this);
panelLayout.addView(this.tePanelView);
}

第四步:绑定美颜

V3.9.0之后
V3.9.0及之前
this.beautyLiveAdapter.bind(this, mLivePusher, new ITEBeautyAdapter.CallBack() {
@Override
public void onCreatedTEBeautyApi(XmagicApi xmagicApi) {
mBeautyKit = new TEBeautyKit(xmagicApi);
tePanelView.setupWithTEBeautyKit(mBeautyKit);
setTipListener(mBeautyKit);
setLastParam(mBeautyKit);
Log.e("beautyLiveAdapter", "onCreatedTEBeautyKit");
}

@Override
public void onDestroyTEBeautyApi() {
mBeautyKit = null;
Log.e("beautyLiveAdapter", "onDestroyTEBeautyKit");
}
});
this.beautyLiveAdapter.bind(this, mLivePusher, new ITEBeautyAdapter.CallBack() {
@Override
public void onCreatedTEBeautyKit(TEBeautyKit beautyKit) {
mBeautyKit = beautyKit;
tePanelView.setupWithTEBeautyKit(mBeautyKit);
setTipListener(mBeautyKit);
setLastParam(mBeautyKit);
Log.e("beautyLiveAdapter", "onCreatedTEBeautyKit");
}

@Override
public void onDestroyTEBeautyKit() {
mBeautyKit = null;
Log.e("beautyLiveAdapter", "onDestroyTEBeautyKit");
}
});

第五步:参数变化通知 adapter

//当相机或画面镜像变化时需要调用notifyCameraChanged告诉adapter 最新的状态
this.beautyLiveAdapter.notifyCameraChanged(isFront, this.isEncoderMirror);
//当屏幕方向变化的时候 需要调用 notifyScreenOrientationChange方法
this.beautyLiveAdapter.notifyScreenOrientationChanged(orientation);


第六步:销毁美颜

//当不再需要美颜时可以调用unbind方法解除绑定关系
this.beautyLiveAdapter.unbind();

第七步:恢复声音

/**
* 用于恢复贴纸中的声音
* 恢复陀螺仪传感器,一般在Activity的onResume方法中调用
*/
this.mBeautyKit.onResume()

第八步:暂停声音

/**
* 用于暂停贴纸中的声音
* 暂停陀螺仪传感器,一般在Activity的onPause方法中调用
*/
this.mBeautyKit.onPause()