设备Android Link SDK的OTA升级流程

设备Android Link SDK的OTA升级流程

准备OTA升级任务,tryStartOta实现了当前版本上报,订阅Topic,当有OTA升级推送时,会通过IOta.STEP_RCVD_OTA回调。

说明 用户可以使用OTA对多个模块升级。默认的OTA任务的模块名是default或者为空。用户可以自定义不同的模块。

tryStartOta会上报默认模块的版本号。如果要在启动时上报自定义模块的版本号,可以对每个模块调用reportModuleVersion进行上报。

用户可以在IOta.STEP_RCVD_OTA的回调结果中,查看OTA任务的模块名称和版本号。因此,在使用了多个自定义OTA模块的场景,也不需要重复调用tryStartOta。

在该回调中,用户返回true表示进行OTA升级,返回false表示拒绝此次OTA升级(设备重新上线或者主动请求OTA任务时,会再次下发该OTA任务)。

mOta.tryStartOta(mConfig, new OtaListener(){

public boolean onOtaProgress(int step, IOta.OtaResult otaResult) {

//当前升级过程的状态值(错误码)。

int code = otaResult.getErrorCode();

if (code != IOta.NO_ERROR) {

AppLog.e(TAG, "onOtaProgress error:" + code);

// show tip for uses.

return false;

}

Object data = otaResult.getData();

switch (step) {

case IOta.STEP_REPORT_VERSION:

// 通知用户已完成向服务端上报设备版本号。

break;

case IOta.STEP_SUBSCRIBE:

// 通知用户已完成向服务端订阅OTA报文。

break;

case IOta.STEP_RCVD_OTA:

// 通知用户当前OTA任务的版本号、模块信息、 MD5等信息。用户如果需要OTA升级,需要返回true;如果拒绝OTA升级,需要返回false(设备重新上线或者主动请求OTA任务时会再次下发该OTA任务)。

AppLog.d(TAG, "STEP_RCVD_OTA");

otaInfo = (OtaInfo) otaResult.getData();

AppLog.d(TAG, "STEP_RCVD_OTA,module:"+ otaInfo.module);

AppLog.d(TAG, "STEP_RCVD_OTA,ext:"+ otaInfo.extData);

break;

case IOta.STEP_DOWNLOAD:

// 下载OTA升级包中,用户可从中感知下载OTA升级包的百分比,具体请参见Demo。

break;

}

return true;

}

});

相关养生推荐

噩梦五星.夜狼星崖副本攻略
beat365app登录入口

噩梦五星.夜狼星崖副本攻略

📅 07-18 👁️ 7902
圣斗士星矢冥王篇一共多少集啊?
365官网登录

圣斗士星矢冥王篇一共多少集啊?

📅 07-06 👁️ 3255
男人个子高手小代表什么命
beat365app登录入口

男人个子高手小代表什么命

📅 07-27 👁️ 3045