云端蓝牙
初始化
Iot SDK初始化
初始化时添加的参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
context | Context | App环境上下文 | 可以在Application中传入 | 是 |
appId | String | 应用Id | 是 | |
appToken | String | 应用Token | 是 |
例子:
在Application onCreate方法中调用以下初始化方法(仅限主进程)
// 判断该当前进程的包名是否一致(主进程)
if (getApplicationInfo().packageName.equals(getCurProcessName(getApplicationContext()))) {
/**
* 初始化SDK
*/
IotCloudSDK.init(Context context, String appId, String appToken);
// 初始化并且关联极光推送,目前使用极光推送,配合云端设置可以实现
// 事件的告警、消息通知等等
// 不需要App外推送的时候请不要调用此方法
// 注意调用此初始化方法时需要导入极光推送的相关SDK和so动态链接库
// 设备控制,命令发送等等和设备交互的功能和极光推送无关
// IotCloudSDK.initWithPush(Context context, String appId, String appToken);
IotCloudSDK.setNeedLoginListener(new IneedLoginListener() {
@Override
public void onNeedLogin(Context context) {
try {
// 目的是为了清空任务栈中的其他页面,强制用户登录
Intent intent = new Intent(context, 登录页面.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
} catch (Exception e) {
Intent intent = new Intent(context, 登录页面.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
});
}
// 获取当前进程包名
public static String getCurProcessName(Context context) {
int pid = android.os.Process.myPid();
ActivityManager activityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : activityManager
.getRunningAppProcesses()) {
if (appProcess.pid == pid) {
return appProcess.processName;
}
}
return null;
}
Ble SDK初始化
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
context | Context | App环境上下文 | 可以在Application中传入 | 是 |
例子:
在Application onCreate方法中调用一下初始化方法
IotBleSDK.init(Context context);
// 登陆官网账户资料里的用户token和用户id
IotBleSDK.getInstance().initCompanyInfo(String companyId,String companyKey);
//注册时返回的用户id、用户token
IotBleSDK.getInstance().initUserInfo(int userId, String userToken);
Iot SDK混淆配置文件
-dontwarn com.iot.cloud.**
-keep class com.iot.cloud.**{ *;}
-dontwarn com.d.c.b.a.**
-keep class com.d.c.b.a.**{ *;}
-dontwarn io.fogcloud.easylink.**
-keep class io.fogcloud.easylink.**{*;}
-keep class javax.jmdns.**{*;}
-dontwarn javax.jmdns.**
-keep class javax.servlet.**{*;}
-dontwarn javax.servlet.**
-keep class org.eclipse.jetty.**{*;}
-dontwarn org.eclipse.jetty.**
-keep class org.slf4j.**{*;}
-dontwarn org.slf4j.**
-dontwarn com.hiflying.**
-keep class com.hiflying.**{*;}
-dontwarn com.longthink.api.**
-keep class com.longthink.api.**{*;}
-dontwarn mediatek.android.IoTManager.**
-keep class mediatek.android.IoTManager.** { *;}
-dontwarn com.google.gson.**
-keep class com.google.gson.**{*;}
-dontwarn org.eclipse.paho.client.mqttv3.**
-keep class org.eclipse.paho.client.mqttv3.**{*;}
Ble SDK混淆配置文件
-downwarn com.iot.ble.**
-keep class com.iot.ble.**{*;}
#rxjava/rxandroid
-dontwarn sun.misc.**
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
long producerIndex;
long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
rx.internal.util.atomic.LinkedQueueNode consumerNode;
}
#okhttp3
-dontwarn okhttp3.**
-dontwarn okio.**
-keep class okhttp3.** { *;}
-keep class okio.** { *;}
#retrofit
-dontwarn retrofit2.**
-keep class retrofit2.** { *;}
#Gson
-downwarn com.google.gson.**
-keep class com.google.gson.**{*;}
用户相关
手机用户注册
用户注册需要分两步,第一步是发送验证码到手机;第二步是使用验证码注册。
发送验证码到手机请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
phone | String | 手机号码 | 接收验证码的手机号 | 是 |
zone | String | 区号 | 传入”0086” 可以使用Zone.CN Zone是SDK中的一个类 目前只支持中国大陆 |
是 |
ISDKCallback | function | 回调函数 | 是 |
例子:
IotCloudSDK.getUserManager().getRegisterSMSCode(phone, zone, new ISDKCallback() {
@Override
public void onSucess() {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
发送验证码到手机返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误信息 | 参照错误码 | 是 |
验证码注册请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
phone | String | 手机号码 | 接收验证码的手机号 | 是 |
password | String | 注册的账号密码 | 是 | |
smsCode | String | 手机接收到的验证码 | 是 | |
zone | String | 区号 | 传入”0086” 可以使用Zone.CN Zone是SDK中的一个类 目前只支持中国大陆 |
是 |
ISDKCallback | function | 回调函数 | 是 |
例子:
IotCloudSDK.getUserManager().userRegister(phone, password, smsCode, zone
new ISDKCallback() {
@Override
public void onSucess() {
// 可以进入其他页面使用SDK了
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
验证码注册返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
邮箱用户注册
邮箱用户注册,需要先获取邮箱验证码,然后使用验证码注册。
获取邮箱验证码请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
String | 邮箱地址 | 是 | ||
ISDKCallback | function | 回调函数 | 是 |
例子:
IotCloudSDK.getUserManager().getRegisterEmailCode(email,
new ISDKCallback() {
@Override
public void onSucess() {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
验证码返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
注册请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
String | 邮箱地址 | 是 | ||
password | String | 注册的账号密码 | 是 | |
code | String | 验证码 | 是 | |
ISDKCallback | function | 回调函数 | 是 |
例子:
IotCloudSDK.getUserManager().registerEmail(email, password, code,
new ISDKCallback() {
@Override
public void onSucess() {
// 可以进入其他页面使用SDK了
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
验证码注册返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
手机用户登录
使用手机号与密码进行登录。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
phone | String | 手机号码 | 接收验证码的手机号 | 是 |
password | String | 注册的账号密码 | 是 | |
zone | String | 区号 | 传入”0086” 可以使用Zone.CN Zone是SDK中的一个类 目前只支持中国大陆 |
是 |
ISDKCallback | function | 回调函数 | 是 |
例子:
例子:
IotCloudSDK.getUserManager().userLogin(phone, password, zone, new ISDKCallback() {
@Override
public void onSucess() {
// 可以调用其他接口使用SDK了
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
邮箱用户登录
使用邮箱与密码进行登录。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
String | 邮箱地址 | 是 | ||
password | String | 注册的账号密码 | 是 | |
ISDKCallback | function | 回调函数 | 是 |
例子:
IotCloudSDK.getUserManager().emailLogin(email, password, new ISDKCallback() {
@Override
public void onSucess() {
// 可以调用其他接口使用SDK了
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
切换用户
调用IotCloudSDK.logout();在IOT SDK登录状态介绍的方法处理新用户的登录注册等。
产品相关
获取产品信息
通过调用该接口获取所有产品信息。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
ISDKCallback | function | 回调函数 | 是 |
例子:
IotCloudSDK.getDeviceManager().getProductList(
new ISDKCallback<List<Product>>() {
@Override
public void onSucess(List<Product> result) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
result | List |
返回成功信息 | 返回success或者需求数据 | 是 |
result列表里的参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
product_id | String | 产品的id | 是 | |
product_name | String | 产品名称 | 是 | |
productIcon | String | 产品的图标URL | 是 | |
productSmallIcon | String | 产品的小图标URL | 是 | |
productCategory | String | 产品的类别 | 是 | |
productKey | String | 产品的key | 是 |
蓝牙相关
是否支持低功耗蓝牙
IotBleSDK.getBleManager().isBleSupported();
打开关闭蓝牙
IotBleSDK.getBleManager().openBluetooth();
IotBleSDK.getBleManager().closeBluetooth();
蓝牙是否打开
IotBleSDK.getBleManager().isBluetoothOpened();
蓝牙状态
监听蓝牙状态变化。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
BluetoothStateListener | Function | 回调函数 | 是 |
例子:
IotBleSDK.getBleManager().setBluetoothStatusListener(new BluetoothStateListener(){
@Override
public void onBluetoothStateChanged(boolean openOrClosed) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
);
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
openOrClosed | boolean | 蓝牙是否打开 | true:打开false:关闭 | 是 |
取消监听:
IotBleSDK.getBleManager().unRegisterBluetoothStatusListener(mBluetoothStateListener);
设备相关
扫描设备
扫描所有低功耗蓝牙设备。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
BleSearchCallback | function | 回调函数 | 是 |
例子:
使用默认扫描配置
IotBleSDK.getBleManager().searchBle(new BleSearchCallback(){
@Override
public void onSearchStarted(){
}
@Override
public void onDeviceFounded(BleDeviceBean bleDeviceBean){
}
@Override
public void onSearchStopped() {
}
@Override
public void onSearchCanceled() {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
erroeMessage | ErroeMessage | 错误码 | 参照错误码 | 是 |
result | BleDeviceImpl | 返回成功信息 | 需求数据 | 是 |
result参数
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
mMac | String | 设备的Mac | 是 | |
mName | String | 设备的名称 | 是 | |
mRssi | int | 信号强度 | 是 | |
mScanRecord | byte[] | 广播数据 | 是 | |
mReconnect | boolean | 是否重连 | 蓝牙异常关闭开启后是 否自动重连。 默认值:false |
是 |
mBleDeviceStatus | BleDevceStatus | 设备状态 | 是 |
mBleDeviceStatus参数
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
status | int | 蓝牙设备状态 | Constants. STATUS_UNKNOWNConstants. BLE_STATUS_CONNECTEDConstants. BLE_STATUS_CONNECTINGConstants. BLE_STATUS_DISC ONNECTINGConstants. BLE_STATUS_DISCONNECTED |
是 |
配置扫描参数,如下
IotBleSDK.getBleManager().initSearchConfig(BleSearchConfig searchConfig);
searchConfig参数
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
mTimeOut | int | 超时时长(单位:ms) | 默认值:5000ms | 是 |
mTimes | int | 超时次数 | 默认值:2 | 是 |
停止扫描
IotBleSDK.getBleManager().stopSearch();
设备配对
监听设备配对状态变化。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
BluetoothBondListener | Function | 回调函数 | 是 |
例子:
IotBleSDK.getBleManager().setBluetoothBondListener(new BluetoothBondListener(){
@Override
public void onBondStateChanged(String mac, int bondState) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
mac | String | 设备的mac | 是 | |
bondState | int | 设备的绑定状态 | Constants.BOND_NONEConstants. BOND_BONDINGConstants. BOND_BONDED |
是 |
取消监听:
IotBleSDK.getBleManager().unRegisterBluetoothBondListener(mBluetoothBondListener);
获取已连接设备列表
List< BleDevice > list = IotBleSDK.getBleManager().getAllConnectedDevice();
设备通信
一般使用IotBleDevice类,通过以下方法获得对象:
IotCloudBleDeviceImpl iotBleDevice = IotCloudBleDeviceFactory.getIotCloudBleDevice(
BleDevice bleDevice, Product product);
// 通过BleDeviceFactory. getBleDevice(BleDeviceBean bleDeviceBean)初始化
可以使用iotBleDevice.releaseBleDevice ()与BleDevice取消关联;使用iotBleDevice. onDestroy()释放资源。
连接
连接蓝牙设备。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
BleConnectCallback | Function | 回调函数 | 是 |
例子:
使用默认连接配置
iotBleDevice.connect(new BleConnectCallback() {
@Override
public void onResponse(int code, BleGattImpl data) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
code | int | 请求返回码 | 参照返回码 | 是 |
data | BleGattImpl | 服务 | 包含服务、特征值等信息 | 否 |
配置连接参数,如下:
IotBleSDK.getBleManager().initBleConnectConfig(BleConnectConfig connectConfig);
connectConfig参数
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
connectTimeout | int | 超时时长(单位:ms) | 默认值:10*1000ms | 否 |
opeartTimeout | int | 操作超时时长(单位:ms) | 默认值:15*1000ms | 否 |
连接状态
监听蓝牙设备连接状态。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
BleConnectStatusListener | Function | 回调函数 | 是 |
例子:
iotBleDevice.setBleConnectStatusListener(new BleConnectStatusListener() {
@Override
public void onConnectStatusChanged(String mac, int status) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
error Message |
Error Message |
错误码 | 参照错误码 | 是 |
mac | String | 设备的mac | mac地址必须大写 | 是 |
status | int | 设备的状态 | Constants. STATUS_UNKNOWN Constants. BLE_STATUS_CONNECTED Constants. BLE_STATUS_CONNECTING Constants. BLE_STATUS_DISCONNECTING Constants. BLE_STATUS_DISCONNECTED Constants.BLE_STATUS_CONNECT_FAIL Constants.BLE_STATUS_RECONNECT_SUCCESS Constants.BLE_STATUS_RECONNECT_FAIL Constants. BLE_STATUS_REGI_SUCCESS Constants.BLE_STATUS_REGI_FAIL Constants.BLE_STATUS_SESSIONKEY_VALID Constants.BLE_STATUS_SESSIONKEY_FAIL Constants.Ble_STATUS_DEVICE_RESET_SUCCESS Constants.Ble_STATUS_DEVICE_RESET_FAIL Constants.Ble_STATUS_DEVICE_REGI_SUCCESS Constants.Ble_STATUS_DEVICE_REGI_FAIL Constants.Ble_STATUS_DEVICE_BIND_SUCCESS Constants.Ble_STATUS_DEVICE_BIND_FAIL |
是 |
断开连接
断开指定的蓝牙设备连接,不释放资源。
iotBleDevice.disconnect();
断开所有的蓝牙设备连接,不是释放资源。
IotBleSDK.getBleManager().disconnect();
设备状态
获取蓝牙设备状态。
例子:
int status = iotBleDevice.getIotBleStatus();
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
status | int | 设备的状态 | Constants. STATUS_UNKNOWN Constants. BLE_STATUS_CONNECTED Constants. BLE_STATUS_CONNECTING Constants. BLE_STATUS_DISCONNECTING Constants. BLE_STATUS_DISCONNECTED Constants.BLE_STATUS_CONNECT_FAIL Constants.BLE_STATUS_RECONNECT_SUCCESS Constants.BLE_STATUS_RECONNECT_FAIL Constants. BLE_STATUS_REGI_SUCCESS Constants.BLE_STATUS_REGI_FAIL Constants.BLE_STATUS_SESSIONKEY_VALID Constants.BLE_STATUS_SESSIONKEY_FAIL Constants.Ble_STATUS_DEVICE_RESET_SUCCESS Constants.Ble_STATUS_DEVICE_RESET_FAIL Constants.Ble_STATUS_DEVICE_REGI_SUCCESS Constants.Ble_STATUS_DEVICE_REGI_FAIL Constants.Ble_STATUS_DEVICE_BIND_SUCCESS Constants.Ble_STATUS_DEVICE_BIND_FAIL |
是 |
自动重连
蓝牙设备异常关闭是否自动重连,出现异常会尝试一直连接。
iotBleDevice.setReconnected(boolean reConnected);
// 是否满足重连条件
boolean reconnect = iotBleDevice. isReconnectionCondition();
信号强度
获取蓝牙设备的信号强度。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
BleReadRssiCallback | Function | 函数 | 是 |
例子:
iotBleDevice.readRssi(new BleReadRssiCallback() {
@Override
public void onResponse(int code, Integer data) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
code | int | 请求返回码 | 是 | |
data | int | 信号强度值 | 是 |
消息接收
手机端接收蓝牙设备发送的消息。
透传二进制数据:
iotBleDevice.setPushListener(new IIotBleDeviceImpl.PushListener() {
@Override
public void onPush(byte[] values) {
}
});
设备功能点更新消息:
iotBleDevice.setCommandListener(new IIotBleDeviceImpl.CommandListener() {
@Override
public void onCommand(List<MessageData> list) {
}
});
设备解绑信息:
iotBleDevice.setUnbindListener(new IIotBleDeviceImpl.UnbindDeviceListener() {
@Override
public void onUnbind() {
}
});
设备错误信息:
iotBleDevice.setErrorListener(new IIotBleDevice.ErrorListener() {
Override
public void onError(IotBleMessage iotBleMessage) {
// 设备的错误信息
iotBleMessage.getErrorMessage();
}
});
透传(push)信息到设备
手机端向蓝牙设备发送信息。
iotBleDevice.push(byte[]array);
下发常规命令
手机端下发命令控制设备。
构造设备功能点数据
MessageData.Builder builder = new MessageData.Builder();
builder.put(key,value);
iotBleDevice.sendCommand(builder, new ICallback() {
@Override
public void onSuccess(Object result) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
})
发送解绑信息
手机端发送解绑蓝牙设备信息,收到回复立即断开连接。
iotBleDevice.unbindBleDevice(new ICallback() {
@Override
public void onSuccess(Object result) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
查询可以OTA升级的设备
查询可以进行OTA升级的设备。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
ICallback | Function | 回调函数 | 是 |
例子:
IotCloudSDK.getOTAManager().getAllOTAUpdateInfo(ICallback<List<OTAUpdateInfo>>(){
@Override
public void onSuccess(OTAUpdateInfo result) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
result:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
productId | int | 产品id | 是 | |
name | String | OTA升级名称,管理平台上传ota升级包的时候可以填写 | 是 | |
mcuVersion | String | 版本号 | 要升级的版本 | 是 |
mcuSizeValue | long | 包的大小 | 包的大小,可以上传两个mcu | 是 |
mcuSize2Value | long | 包的大小 | 包的大小,可以上传两个mcu | 是 |
description | String | OTA升级描述 | 是 | |
iotId | String | 设备唯一id | 是 | |
deviceMac | String | 设备mac地址 | 是 | |
deviceName | String | 设备名称 | 是 |
查询指定版本的bin包信息
查询指定版本的bin信息并下载保存。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
productId | int | 包的大小 | 是 | |
iotId | String | 设备的iot_id | 是 | |
ower | int | 升级类型 | 1:mcu升级,2:wifi升级,3:ble升级 | 是 |
version | String | 版本号 | 是 | |
IOTADownloadCallback | Function | 回调函数 | 是 |
例子:
IotBleSDK.getBleManager().downloadDeviceOTAMCU(productId, iotId, owner, version,
new IOTADownloadCallback() {
@Override
public void startDownload() {
}
@Override
public void onProgress(long total, long progress, boolean down) {
}
@Override
public void onSuccess(Object object) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
erroeMessage | ErroeMessage | 错误码 | 参照错误码 | 是 |
total | int | 总大小 | 是 | |
progress | int | 当前进度 | 是 | |
done | boolean | 是否已完成 | 是 |
向设备发送OTA升级指令
发送开始升级指令,向设备端传输OTA升级包。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
ftotallen | int | 包的大小 | 是 | |
version | String | 设备要升级的版本 | 是 | |
ower | int | 升级类型 | 1:mcu升级,2:wifi升级,3:ble升级 | 是 |
IOTAUpgradeCallback | Function | 回调函数 | 是 |
例子:
iotBleDevice.requestOTAUpgrade(ftotallen,version,owner, new IOTAUpgradeCallback() {
@Override
public void startOTAUpgrade() {
}
@Override
public void progressOTAUpgrade(int total, int progress, boolean done) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
erroeMessage | ErroeMessage | 错误码 | 参照错误码 | 是 |
total | int | 总大小 | 是 | |
progress | int | 当前进度 | 是 | |
done | boolean | 是否已完成 | 是 |
向设备发送异常终止OTA传输
OTA升级过程中可以向设备发送取消OTA传输命令。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
owner | int | 升级类型 | 1:mcu升级,2:wifi升级,3:ble升级 | 是 |
ICallback | Function | 回调函数 |
例子:
iotBleDevice. cancalOTAUpgrade (owner,new ICallback() {
@Override
public void onSuccess(Object object) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
向设备发送执行OTA升级指令
OTA包全部传输到设备后需要重启设备,设备端才能进行OTA升级
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
owner | int | 升级类型 | 1:mcu升级,2:wifi升级,3:ble升级 | 是 |
mcuVersion | String | 升级的mcu版本号 | 是 | |
timeout | long | 设备重启超时时间 | 设备重启进行OTA升级需要时间,超出时间范围未回调表示超时,建议时间设置大些。 默认(小于等于0):20*1000ms。 单位:ms | |
ICallback | Function | 回调函数 |
例子:
iotBleDevice. confirmOTAUpgrade (owner, mcuVersion ,timeout,new ICallback() {
@Override
public void onSuccess(Object object) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
查询指定版本升级进度
获取设备的升级状态和升级进度。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
iotId | String | 设备唯一id | 是 | |
mcuVersion | String | 要升级的目标版本号 | 是 | |
ICallback | Function | 回调函数 | 是 |
例子:
IotCloudSDK.getOTAManager().getDeviceOTAProgress (iotId, mcuVersion,
new ICallback<OTAUpdateProgress>() {
@Override
public void onSuccess(OTAUpdateProgress result) {
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
result:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
status | int | 状态包含5种: 0未下载 可以向设备发送检查升级指令 1正在下载 2已下载 3更新完成 4更新失败 5正在升级 |
是 | |
mcuSizeValue | long | 包的大小,可以上传两个mcu | 是 | |
mcuSize2Value | long | 包的大小,可以上传两个mcu | 是 | |
iotId | String | 设备唯一id | 是 | |
totalSizeValue | long | 总共大小 | 下载完成后会变为0,即状态2的时候 | 是 |
downloadSizeValue | long | 当前下载的大小 | 下载完成后会变为0,即状态2的时候 | 是 |
查询设备是否正在OTA升级
查询设备是否正在进行OTA文件传输,正在传输则返回文件大小和偏移量。
请求参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
ICallback | Function | 回调函数 |
例子:
iotBleDevice. requestOTAUpgrading (new ICallback() {
@Override
public void onSuccess(OTAUpgrading upgrading) {
if(null == upgrading || !upgrading.flag){
// 未升级
}else{
// 正在升级
}
}
@Override
public void onError(ErrorMessage errorMessage) {
}
});
返回参数:
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
result | OTAUpgrading | 返回成功信息 | 是 | |
errorMessage | ErrorMessage | 错误码 | 参照错误码 | 是 |
result参数
参数名 | 类型 | 说明 | 备注 | 必需 |
---|---|---|---|---|
ftotalLenth | int | OTA固件包大小 | 是 | |
progress | long | 已传输偏移量 | 是 | |
flag | long | true: 正在升级 false: 未升级 | 是 |