升级管理功能提供了SDK和模块的升级检测、下载和管理功能。该功能允许应用层检查新版本、下载升级包、管理模块信息,确保SDK始终保持最新状态。
检查是否有新版本可用:
// 检查升级 - 检查是否有新版本可用
NemoSdkAdaptor::getInstance()->upgradeCheck();
// 设置下载路径 - 设置动态升级模块文件路径
NemoSdkAdaptor::getInstance()->setDynUpsModuleFilePath("C:/upgrades/");
下载升级包:
// 开始下载升级包 - 开始下载升级包
NemoSdkAdaptor::getInstance()->upgradeDownload();
// 停止下载升级包 - 停止正在进行的升级包下载
NemoSdkAdaptor::getInstance()->upgradeStopDownload();
管理动态升级模块:
// 请求模块信息 - 请求指定类型的动态升级模块信息
NemoSdkAdaptor::getInstance()->requestDynUpsModuleWithType("module_type");
// 获取模块信息 - 获取指定类型的动态升级模块信息
NemoSdkAdaptor::getInstance()->getDynUpsModuleInfoWithType("module_type");
API: upgradeCheck
接口定义:
virtual void upgradeCheck() = 0;
参数: 无
返回值: 无
示例:
// 检查是否有新版本可用
NemoSdkAdaptor::getInstance()->upgradeCheck();
API: upgradeDownload
接口定义:
virtual void upgradeDownload() = 0;
参数: 无
返回值: 无
示例:
// 开始下载升级包
NemoSdkAdaptor::getInstance()->upgradeDownload();
API: upgradeStopDownload
接口定义:
virtual void upgradeStopDownload() = 0;
参数: 无
返回值: 无
示例:
// 停止正在进行的升级包下载
NemoSdkAdaptor::getInstance()->upgradeStopDownload();
接口定义:
virtual void setDynUpsModuleFilePath(const char* path) = 0;
参数:
path
: const char* - 文件下载路径,必须设置,如果没有,后续的操作不再执行返回值: 无
示例:
// 设置升级文件下载路径
NemoSdkAdaptor::getInstance()->setDynUpsModuleFilePath("C:/upgrades/");
// 设置相对路径
NemoSdkAdaptor::getInstance()->setDynUpsModuleFilePath("./upgrades/");
API: requestDynUpsModuleWithType
接口定义:
virtual void requestDynUpsModuleWithType(const char* moduleType) = 0;
参数:
moduleType
: const char* - 模块类型返回值: 无
示例:
// 请求AI模块信息
NemoSdkAdaptor::getInstance()->requestDynUpsModuleWithType("ai_module");
// 请求翻译模块信息
NemoSdkAdaptor::getInstance()->requestDynUpsModuleWithType("translation_module");
// 请求美颜模块信息
NemoSdkAdaptor::getInstance()->requestDynUpsModuleWithType("beauty_module");
API: getDynUpsModuleInfoWithType
接口定义:
virtual void getDynUpsModuleInfoWithType(const char* moduleType) = 0;
参数:
moduleType
: const char* - 模块类型(每次打开模块页面都需要调用)返回值: 无
示例:
// 获取AI模块信息
NemoSdkAdaptor::getInstance()->getDynUpsModuleInfoWithType("ai_module");
// 获取翻译模块信息
NemoSdkAdaptor::getInstance()->getDynUpsModuleInfoWithType("translation_module");
class UpgradeManager {
private:
bool _isUpgradeChecking = false;
bool _isUpgradeDownloading = false;
std::string _downloadPath = "./upgrades/";
std::map<std::string, std::string> _moduleInfo;
public:
// 升级检测
void checkUpgrade() {
if (!_isUpgradeChecking) {
NemoSdkAdaptor::getInstance()->upgradeCheck();
_isUpgradeChecking = true;
}
}
// 升级下载
void startUpgradeDownload() {
if (!_isUpgradeDownloading) {
NemoSdkAdaptor::getInstance()->upgradeDownload();
_isUpgradeDownloading = true;
}
}
void stopUpgradeDownload() {
if (_isUpgradeDownloading) {
NemoSdkAdaptor::getInstance()->upgradeStopDownload();
_isUpgradeDownloading = false;
}
}
// 模块管理
void setDownloadPath(const std::string& path) {
_downloadPath = path;
NemoSdkAdaptor::getInstance()->setDynUpsModuleFilePath(path);
}
void requestModuleInfo(const std::string& moduleType) {
NemoSdkAdaptor::getInstance()->requestDynUpsModuleWithType(moduleType);
}
void getModuleInfo(const std::string& moduleType) {
NemoSdkAdaptor::getInstance()->getDynUpsModuleInfoWithType(moduleType);
}
// 升级检查回调
void onUpgradeCheckResult(const XYString& code, const XYString& result) {
QString errCode(code.str());
QString resultStr(result.str());
_isUpgradeChecking = false;
if (errCode == SDKError_NoError) {
qDebug() << "Upgrade check result:" << resultStr;
emit upgradeCheckResult(resultStr);
} else {
qDebug() << "Upgrade check failed:" << errCode;
emit upgradeCheckFailed(errCode);
}
}
// 升级下载回调
void onUpgradeDownloadResult(const XYString& code, const XYString& result) {
QString errCode(code.str());
QString resultStr(result.str());
_isUpgradeDownloading = false;
if (errCode == SDKError_NoError) {
qDebug() << "Upgrade download result:" << resultStr;
emit upgradeDownloadResult(resultStr);
} else {
qDebug() << "Upgrade download failed:" << errCode;
emit upgradeDownloadFailed(errCode);
}
}
void onUpgradeDownloadProgressChanged(const XYString& progress) {
QString progressStr(progress.str());
qDebug() << "Upgrade download progress:" << progressStr;
emit upgradeDownloadProgressChanged(progressStr);
}
// 模块下载回调
void onDynUpsDidFinishDownloadModule(const XYString& moduleInfo) {
QString infoStr(moduleInfo.str());
qDebug() << "Module download finished:" << infoStr;
// 解析模块信息
parseModuleInfo(infoStr);
emit moduleDownloadFinished(infoStr);
}
private:
void parseModuleInfo(const QString& moduleInfo) {
// 解析模块信息JSON
QJsonDocument doc = QJsonDocument::fromJson(moduleInfo.toUtf8());
if (doc.isObject()) {
QJsonObject obj = doc.object();
for (auto it = obj.begin(); it != obj.end(); ++it) {
_moduleInfo[it.key().toStdString()] = it.value().toString().toStdString();
}
}
}
public:
// Getter方法
bool isUpgradeChecking() const { return _isUpgradeChecking; }
bool isUpgradeDownloading() const { return _isUpgradeDownloading; }
std::string getDownloadPath() const { return _downloadPath; }
std::map<std::string, std::string> getModuleInfo() const { return _moduleInfo; }
};
模块类型 | 说明 | 功能描述 |
| AI模块 | 人脸识别、电子铭牌等AI功能 |
| 翻译模块 | 同声传译、字幕翻译功能 |
| 美颜模块 | 虚拟背景、美颜滤镜功能 |
| 白板模块 | 白板标注、协作功能 |
| 录制模块 | 会议录制、云端存储功能 |
升级检测功能提供以下特性:
升级下载功能包括:
模块管理功能支持:
方法 | 描述 | 链接 |
升级检测 | ||
升级包下载 | ||
停止升级包下载 | ||
设置文件下载路径,必须设置,如果没有,后续的操作不再执行 | ||
请求模块信息 | ||
获取模块信息(每次打开模块页面都需要调用) |
回调 | 描述 | 链接 |
升级检查结果回调 | ||
升级下载结果回调 | ||
升级下载进度变化回调 | ||
动态升级模块下载完成回调 |