com.tencent.demo.download 目录下的代码拷贝到您的工程。.zip格式的压缩包,再次解压,您将看到如下文件:
ResDownloadConfig.java 里对应的常量上。TEMenuActivity.java里的代码,通过 ResDownloadUtil.getValidLibsDirectory 检查 so 库是否已经下载好,如果没下载好,则调用 ResDownloadUtil.checkOrDownloadFiles 启动下载,下载成功后得到 so 库的路径 sdkLibraryDirectory,然后调用 XmagicApi.setLibPathAndLoad(sdkLibraryDirectory) 加载 so 库。String validLibsDirectory = ResDownloadUtil.getValidLibsDirectory(this, libraryMD5);if (validLibsDirectory == null) {ResDownloadUtil.checkOrDownloadFiles(this, ResDownloadUtil.FILE_TYPE_LIBS, libraryURL, libraryMD5,new TEDownloadListener() {@Overridepublic void onDownloadSuccess(String directory) {sdkLibraryDirectory = directory;}@Overridepublic void onDownloading(int progress) {}@Overridepublic void onDownloadFailed(int errorCode) {}});} else {sdkLibraryDirectory = validLibsDirectory;}
TEMenuActivity.java里的代码,通过 ResDownloadUtil.getValidAssetsDirectory 检查模型资源是否已经下载好,如果没下载好,则调用 ResDownloadUtil.checkOrDownloadFiles 启动下载,模块内部会把这些资源下载、整理、拷贝到 AppConfig.resPathForSDK目录 ,在 new XmagicApi 时传给 SDK。String validAssetsDirectory = ResDownloadUtil.getValidAssetsDirectory(this, ResDownloadConfig.DOWNLOAD_MD5_ASSETS);if (TextUtils.isEmpty(validAssetsDirectory)) {ResDownloadUtil.checkOrDownloadFiles(this, ResDownloadUtil.FILE_TYPE_ASSETS,ResDownloadConfig.DOWNLOAD_URL_ASSETS,ResDownloadConfig.DOWNLOAD_MD5_ASSETS, new TEDownloadListener() {@Overridepublic void onDownloadSuccess(String directory) {}@Overridepublic void onDownloading(int progress) {}@Overridepublic void onDownloadFailed(int errorCode) {}});} else {}
ResDownloadUtil.java 的 ENABLE_RESUME_FROM_BREAKPOINT 属性为true),可以确保在下载异常中断后,下次继续从中断点接着下载。如果您也想开启断点续传,请确保您的下载服务器支持断点续传能力。 检测方法:判断服务器是否支持断点续传,看Web服务器是否支持Range请求即可。测试方法是在命令行中执行curl命令:curl -i --range 0-9 https://您的服务器地址/待下载的文件名例如:curl -i --range 0-9 https://mediacloud-76607.gzc.vod.tencent-cloud.com/TencentEffect/Android/2.4.1.119/xmagic_S1-04_android_2.4.1.119.zip如果返回的内容有Content-Range 字段,则表示服务器支持断点续传。

XmagicApi.setLibPathAndLoad(/path/to/so/files) 加载 so 库。
AppConfig.resPathForSDK所指向的目录),代码中的downloadedDirectory是您解压后的文件所在目录。addAiModeFiles返回的错误码-2表示文件拷贝过程中失败了,可能是手机空间不足或 IO 异常,可尝试重新拷贝或重新下载。private static boolean organizeAssetsDirectory(String downloadedDirectory) {for (String path : XmagicResourceUtil.AI_MODE_DIR_NAMES) {if (XmagicApi.addAiModeFiles(downloadedDirectory + File.separator + path, AppConfig.resPathForSDK) == -2) {return false;}}return true;}
implementation 'com.google.code.gson:gson:2.8.5'implementation 'com.tencent.tav:libpag:4.4.24-noffavc'
文档反馈