glide library in the Xmagic module to make it the same as the actual version number.Xmagic module to make it the same as the actual version number..aar file in the libs directory of the Xmagic module with the .aar file in libs of your SDK.../src/main/assets of the Xmagic module with those in assets/ of your SDK. If there are files in the MotionRes folder of your SDK package, also copy them to the ../src/main/assets directory..so files in ../src/main/jniLibs of the Xmagic module with the .so files in jniLibs of your SDK package (you need to decompress the ZIP files in the jinLibs folder to get the .so files for arm64-v8a and armeabi-v7a).Xmagic module in the demo into your project.implementation 'com.tencent.liteav:LiteAVSDK_Enterprise:latest.release'implementation 'com.tencent.liteav:LiteAVSDK_Professional:latest.release'oncreate of application in your project:XMagicImpl.init(this);XMagicImpl.checkAuth(null);
XMagicImpl class, replace the values of license URL and key to the ones you obtain from Tencent Cloud.TCVideoRecordActivity.java).TCVideoRecordActivity.java class:private XMagicImpl mXMagic;private int isPause = 0;// 0: not paused; 1: paused; 2: pausing; 3: to be terminated
onCreate in the TCVideoRecordActivity.java class:TXUGCRecord instance = TXUGCRecord.getInstance(this);instance.setVideoProcessListener(new TXUGCRecord.VideoCustomProcessListener() {@Overridepublic int onTextureCustomProcess(int textureId, int width, int height) {if (isPause == 0 && mXMagic != null) {return mXMagic.process(textureId, width, height);}return 0;}@Overridepublic void onDetectFacePoints(float[] floats) {}@Overridepublic void onTextureDestroyed() {if (Looper.getMainLooper() != Looper.myLooper()) { // Not the main threadif (isPause == 1) {isPause = 2;if (mXMagic != null) {mXMagic.onDestroy();}initXMagic();isPause = 0;} else if (isPause == 3) {if (mXMagic != null) {mXMagic.onDestroy();}}}}});XMagicImpl.checkAuth((errorCode, msg) -> {if (errorCode == TELicenseCheck.ERROR_OK) {loadXmagicRes();} else {TXCLog.e("TAG", "Authentication failed. Check the authentication URL and key" + errorCode + " " + msg);}});
onStop:isPause = 1;if (mXMagic != null) {mXMagic.onPause();}
onDestroy:isPause = 3;XmagicPanelDataManager.getInstance().clearData();
onActivityResult:if (mXMagic != null) {mXMagic.onActivityResult(requestCode, resultCode, data);}
private void loadXmagicRes() {if (XMagicImpl.isLoadedRes) {XmagicResParser.parseRes(getApplicationContext());initXMagic();return;}new Thread(() -> {XmagicResParser.setResPath(new File(getFilesDir(), "xmagic").getAbsolutePath());XmagicResParser.copyRes(getApplicationContext());XmagicResParser.parseRes(getApplicationContext());XMagicImpl.isLoadedRes = true;new Handler(Looper.getMainLooper()).post(() -> {initXMagic();});}).start();}/*** Initialize the beauty filter SDK*/private void initXMagic() {if (mXMagic == null) {mXMagic = new XMagicImpl(this, mUGCKitVideoRecord.getBeautyPanel());}else{mXMagic.onResume();}}
mBeautyPanel in the AbsVideoRecordUI class to RelativeLayout and the response type of getBeautyPanel() to RelativeLayout. You also need to modify the corresponding XML file and comment out the code that reports errors.UGCKitVideoRecord class.ScrollFilterView class, delete the mBeautyPanel variable and comment out the code that reports errors.beautysettingkit dependenciesbuild.gradle file of the ugckit module, delete the beautysettingkit dependencies, compile the project, and comment out the code that report errors.Feedback