TEBeautyAdapter_Trtc是一个可以快速将腾讯特效SDK集成进腾讯TRTC项目中的库,主要用于加快特效SDK的集成和解决横屏时美颜适配较复杂问题。
SDK 集成
1. 集成腾讯特效SDK,参见 独立集成腾讯特效 中的集成方式。
2. 集成TEBeautyKit库,参见 TEBeautyKit / Android 中的如何集成模块。
3. 集成 te_adapter_trtc 库。可参见 TRTC demo 工程。
方式一:Maven 远程依赖
在 dependencies 中添加 TEBeautyAdapter_trtc库的依赖
dependencies{...implementation 'com.tencent.mediacloud:te_adapter_trtc:版本号'}
方式二:aar 本地依赖
?下载 aar 文件(下载的是一个 zip 文件,解压即可得到 aar 文件)。
添加下载的 te_adapter_trtc_xxxx
.aar
文件到 app 工程 libs
目录下。打开 app 模块的
build.gradle
添加依赖引用:dependencies{...implementation fileTree(dir: 'libs', include: ['*.jar','*.aar']) //添加 *.aar}
SDK 使用
第一步:设置路径
TEBeautyKit.setResPath((new File(getFilesDir(), "xmagic_dir").getAbsolutePath()));
第二步:设置面板 JSON 文件
TEUIConfig.getInstance().setTEPanelViewRes("beauty_panel/beauty.json",null, "beauty_panel/lut.json", "beauty_panel/motions.json", "beauty_panel/makeup.json", "beauty_panel/segmentation.json");
第三步:复制美颜资源
new Thread(() -> { boolean result = TEBeautyKit.copyRes(MainActivity.this.getApplicationContext()); runOnUiThread(() -> { if (result) { saveCopyData(); } teProgressDialog.dismiss(); checkLicense(); }); }).start();
第四步:鉴权
TEBeautyKit.setTELicense(this.getApplicationContext(),LicenseConstant.mXMagicLicenceUrl,LicenseConstant.mXMagicKey, (i, s) -> { if (i == LicenseConstant.AUTH_STATE_SUCCEED) { Intent intent = new Intent(MainActivity.this, ThirdBeautyActivity.class); startActivity(intent); } else { Log.e(TAG, "te license check is failed,please checke "); } });
第五步:初始化adapter和添加面板
this.beautyAdapter = new TEBeautyTRTCAdapter();//设置手机朝向 this.beautyAdapter.notifyScreenOrientationChanged(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//设置相机是前置摄像头还是后置摄像头,以及是否编码镜像 this.beautyAdapter.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); }
第六步:绑定美颜
this.beautyAdapter.bind(this, mLivePusher, new ITEBeautyAdapter.CallBack() { @Override public void onCreatedTEBeautyKit(TEBeautyKit beautyKit) { mBeautyKit = beautyKit;//将mBeautyKit和美颜面板进行绑定 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.beautyAdapter.notifyCameraChanged(isFront, this.isEncoderMirror);//当屏幕方向变化的时候 需要调用 notifyScreenOrientationChange方法this.beautyAdapter.notifyScreenOrientationChanged(orientation);?
第八步:销毁美颜
//当不再需要美颜时可以调用unbind方法解除绑定关系 this.beautyAdapter.unbind();
第九步:恢复声音
/** * 用于恢复贴纸中的声音 * 恢复陀螺仪传感器,一般在Activity的onResume方法中调用 */ this.mBeautyKit.onResume()
第十步:暂停声音
/** * 用于暂停贴纸中的声音 * 暂停陀螺仪传感器,一般在Activity的onPause方法中调用 */ this.mBeautyKit.onPause()