Android SDK 快速接入文档
目录 概要... 3 1 SDK 介绍... 3 2 AndroidMinfest.xml 配置... 4 3 SDK 初始化... 6 4 发送手机验证码... 10 5 注册... 11 6 登录... 11 7 获取产品列表... 12 8 获取设备列表... 13 9 发现设备... 14 10 绑定设备... 15 11 控制设备... 15 12 接收设备上报消息... 17
概要 开发 青莲云作为物联网后端云服务, 用户可以使用青莲云提供的 Android SDK 快速进行 App 1 SDK 介绍 iotcloud_sdk_x.x.x arm64-v8a libcloudcore.so 动态链接库 armeabi libcloudcore.so 动态链接库 armeabi-v7a libcloudcore.so 动态链接库 iot_cloud_sdk_x.x.x.jar SDK 核心库文件 mips libcloudcore.so 动态链接库 mips64 libcloudcore.so 动态链接库 x86 libcloudcore.so 动态链接库 x86_64 libcloudcore.so 动态链接库
2 AndroidMinfest.xml 配置 <!-- sdcard --> android:name="android.permission.read_external_storage" /> android:name="android.permission.write_external_storage" /> android:name="android.permission.mount_unmount_filesystems" /> <!-- 联网 --> /> android:name="android.permission.internet" android:name="android.permission.change_network_state" /> android:name="android.permission.change_wifi_state" /> android:name="android.permission.access_network_state" /> android:name="android.permission.access_wifi_state" /> android:name="android.permission.change_wifi_multicast_state" /> android:name="android.permission.wake_lock" /> <!-- 定位 -->
android:name="android.permission.access_coarse_location" /> android:name="android.permission.access_fine_location" /> <!-- SDK 使用的签名级别的权限 --> <permission android:name=" 应用包名.permission.IOTCLOUD_MESSAGE" android:protectionlevel="signature" /> android:name=" 应用包名.permission.IOTCLOUD_MESSAGE" /> <!-- 消息服务 --> <service android:name="com.iot.cloud.sdk.api.mqttservice" android:enabled="true" android:exported="false" android:permission=" 应用包名.permission.IOTCLOUD_MESSAGE" /> <!-- 自定义广播接收者, 接收消息和指令 --> <receiver android:name=" 广播接收者全限定类名 " android:enabled="true" android:exported="false"
android:permission=" 应用包名.permission.IOTCLOUD_MESSAGE"> <intent-filter> <action android:name="com.iot.cloud.sdk.intent.message_received" /> </receiver> </intent-filter> 3 SDK 初始化 1 在官网左上角点击授权管理 2 添加应用即可获得 AppID 和 AppToken 推荐在 Application 中进行初始化, 注意只需要在主进程初始化一次即可 public void oncreate() { super.oncreate(); // 判断是主进程 if (getapplicationinfo().packagename
.equals(getcurprocessname(getapplicationcontext()))) { /** * 初始化 SDK */ IotCloudSDK.init(this, AppId, AppToken); 页面 // 设置需要登录时的状态回调, 用来处理页面跳转, 比如跳转到登录 IotCloudSDK.setNeedLoginListener (new INeedLoginListener() { public void onneedlogin(context context) { try { Intent intent = new Intent(context, SetAppIdActivity.class); intent.addflags(intent.flag_activity_clear_task); intent.addflags(intent.flag_activity_new_task); startactivity(intent); catch (Exception e) { Intent intent = new Intent(context, SetAppIdActivity.class); intent.addflags(intent.flag_activity_new_task); startactivity(intent);
); DeviceController.bindGlobalMessage(this); // 返回当前 SDK 的长连接状态 IotCloudSDK.setConnectionStatusListener(new IConnectionStatusListener() { ); public void onconnectionstatus(int i) { LogUtils.e("MQTT 当前状态 : " + i); 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; public void onmessage(cloudmessage cloudmessage) { if (cloudmessage.geterrormessage().getcode() == CommonError.MQTT_MESSAGE_SUCCESS) { // success switch (cloudmessage.gettype()) { OTA 升级 case CloudMessageType.TYPE_OTA_REV: // 有设备需要手动 break; case CloudMessageType.TYPE_SHARE_REV: // 有分享消息, 请到分享消息列表查看 int sharetype = CloudShareMessageType.getShareType(cloudMessage); { if (sharetype == CloudShareMessageType.TYPE_DEVICE) // 设备分享消息 LogUtils.e(" 设备分享消息 "); else if (sharetype == CloudShareMessageType.TYPE_FAMILY) {
// 家庭分享消息 LogUtils.e(" 家庭分享消息 "); ); break; else { // 错误消息 LogUtils.e(cloudMessage.getErrorMessage()); 4 发送手机验证码 // Zone.CN 表示手机区号,Zone 是 SDK 中的类 IotCloudSDK.getUserManager().getRegisterSMSCode(" 手机号 ", Zone.CN, new ISDKCallback() { public void onsuccess() { // 成功 public void onerror(errormessage errormessage) {
// 失败, 查看错误码和错误信息 // errormessage.getcode(), errormessage.getmessage() ); 5 注册 // 注册接口 // Zone.CN 表示手机区号,Zone 是 SDK 中的类 IotCloudSDK.getUserManager().userRegister(" 手机号 ", " 密码 ", " 短信验证码 ", Zone.CN, new ISDKCallback() { public void onsuccess() { // 成功 public void onerror(errormessage errormessage) { // 失败, 查看错误码和错误信息 // errormessage.getcode(), errormessage.getmessage() ); 6 登录 // 登录接口
// Zone.CN 表示手机区号,Zone 是 SDK 中的类 IotCloudSDK.getUserManager().userLogin(" 手机号 ", " 密码 ", Zone.CN, new ISDKCallback() { public void onsuccess() { // 成功, 可以调用其他接口使用 SDK 了 public void onerror(errormessage errormessage) { // 失败, 查看错误码和错误信息 // errormessage.getcode(), errormessage.getmessage() ); 7 获取产品列表 1 添加产品配置到应用中就会在产品列表接口中获取到 IotCloudSDK.getDeviceManager().getProductList(new ICallback<List<Product>>() {
public void onsuccess(list<product> products) { // 获取产品列表 // Product.productId 表示产品 id public void onerror(errormessage errormessage) { ); 8 获取设备列表 IotCloudSDK.getDeviceManager().getDeviceList(new ICallback<List<CloudDevice>>() { public void onsuccess(list<clouddevice> devicelist) { // 成功 public void onerror(errormessage errormessage) { // 失败, 查看错误码和错误信息 // errormessage.getcode(), errormessage.getmessage() );
9 发现设备 // 注意, 目前相关模组仅支持 2.4GWIFI,5GWIFI 和混合 WIFI 可能无法正常工作 // WIFI 模组目前支持 乐鑫 ESP8266 汉枫 庆科 Mico 高通等 IotCloudSDK.getDeviceManager().startEspSmart(" 路由器名称 ", " 路由器密码 ", 产品 id, new DeviceFoundListener() { public void onerror(errormessage errormessage) { // 一般不会支持此回调 public void finddevice(clouddevice device) { // 可能会多次回调, 回调在主线程 // 回调了设备信息, 其中 iotid 和 iottoken 可用于后续绑定设备 // iotid 表示设备唯一 id // iottoken 主要用于业务上的信息验证, 一般不要展示该字段 String iotid = device.getiotid(); String iottoken = device.getiottoken(); public void nofinddevice() { // 在没有发现设备信息的时候或者超时后总会回调此接口 // 可以表示本次调用完成, 不代表没有发现设备
); 10 绑定设备 // 绑定接口, 传入设备对象 IotCloudSDK.getDeviceManager().bindDevice(CloudDevice clouddevice, new IBindDeviceCallback() { public void onsuccess(binddeviceinfo binddeviceinfo) { // 绑定成功 public void onerror(errormessage errormessage, BindDeviceInfo binddeviceinfo) { ); // 绑定失败 11 控制设备 1 控制设备之前需要为该设备所属的产品增加功能点, 点击进入产品功能后, 添加功能点 即可
// 从产品列表, 设备列表获取的元素 // Product 的 productid // CloudDevice.getIotId // CloudDevice.getSubIotId 该字段可能为空, 当 CloudDevice 实例是子设备的时候该字段有值 // CloudDevice.isSubDevice 判断是否是子设备 DeviceController devicecontroller = new DeviceController( 产品 id, " 设备 id", " 子设备 id 如果有 "); MessageData.Builder builder = new MessageData.Builder(); // key 是云端产品功能页面的数据点功能键 // value 可以是二进制数据类型 int float String // put 方法可以多次调用, 同一个 key 不会覆盖, 会添加多次 builder.put("key", value); builder.put("key", value); builder.put("key", value); // 发送命令
devicecontroller.sendcommand(builder, new ISDKCallback() { public void onsuccess() { // 发送成功 public void onerror(errormessage errormessage) { // 发送失败 ); 12 接收设备上报消息 devicecontroller.setdpupdatelistener(new DeviceController.DPUpdateListener() { public void ondpupdate(list<messagedata> list) { // list 可能为空 // MessageData.key 表示数据点功能键 // 根据 key 来判断是哪个数据点, 然后使用对应的 getvalue 方法, 强转类型即可 ); // getintvalue getfloatvalue getstringvalue getbytearray