기본 개념
제품 장점
시나리오
.aar 파일을 SDK의 libs에 있는 .aar 파일로 교체합니다.../src/main/assets에 있는 모든 파일을 SDK의 assets/에 있는 파일로 교체합니다. SDK 패키지의 MotionRes 폴더에 파일이 있으면 ../src/main/assets 디렉터리에도 복사합니다.../src/main/jniLibs에 있는 모든 .so 파일을 SDK 패키지의 jniLibs에 있는 .so 파일로 교체합니다. (arm64-v8a 및 armeabi-v7a에 대한 .so 파일을 얻으려면 jinLibs 폴더에 있는 ZIP 파일의 압축을 해제해야 합니다.)implementation 'com.tencent.liteav:LiteAVSDK_Enterprise:latest.release'implementation 'com.tencent.liteav:LiteAVSDK_Professional:latest.release'XMagicImpl.init(this);XMagicImpl.checkAuth(null);
TCVideoRecordActivity.java 클래스에 다음 변수 코드를 추가합니다.private XMagicImpl mXMagic;private int isPause = 0;//0 일시 중지되지 않음, 1일시 중지됨, 2일시 중지 중, 3종료 예정
TCVideoRecordActivity.java 클래스의 onCreate 메소드 뒤에 다음 코드를 추가합니다.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()) { //메인 스레드가 아님if (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", "인증 실패, 인증 url 및 key를 확인하십시오" + errorCode + " " + msg);}});
isPause = 1;if (mXMagic != null) {mXMagic.onPause();}
isPause = 3;XmagicPanelDataManager.getInstance().clearData();
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();}/*** 뷰티 필터 SDK 초기화*/private void initXMagic() {if (mXMagic == null) {mXMagic = new XMagicImpl(this, mUGCKitVideoRecord.getBeautyPanel());}else{mXMagic.onResume();}}
피드백