物联网平台机智云Android开源框架入门之旅(四) 分析怎么做好指令是否成功发送到云端的逻辑处理。

欢迎来到物联网平台机智云Android开源框架入门之旅

本套博客系列教程由物联网“非机智云工作人员”发烧友 半颗心脏 潜心所力原创,以下是本系列博客目录:


1、 认识无所不在的类 Gi

1、 必须涉及到的类 GizWifiDeviceListener.class。


  • 这个类呢。是设备回调云端该设备所有信息的一个重要类。

  • 方法以及说明如下:

    • didGetHardwareInfo:设备硬件信息的回调。

    • didSetCustomInfo:设置设备绑定信息的回调。

    • didExitProductionTesting:设备退出产测的回调

    • didSetSubscribe:设备订阅或解除订阅的回调。

    • didUpdateNetStatus:设备网络状态变化通知。

    • didReceiveData:接收到设备状态上报的回调。


  • 于是乎,我们可以这样做当你做好了发送指令到云端,就敲以下代码,可以实现监听:

    • 注意 : 当发送指令到云端时候,从didReceiveData( )方法返回来的ConcurrentHashMap对象肯定是为null,只有当设备自己发出心跳并通过云端发送数据到这里ConcurrentHashMap对象才不为空!切记切记!

    • 所以… … 我们必须先判断ConcurrentHashMap对象是否为null ,否则会报空指针,接下来的操作就麻烦了。

  • 如下所示,iswater 和 open_off 是布尔值类型的数据点。我们先判断data是否为空,再做其他操作!

 private GizWifiDeviceListener listener = new GizWifiDeviceListener() {

        @Override
        public void didReceiveData(GizWifiErrorCode result, GizWifiDevice device, ConcurrentHashMap<String, Object> dataMap, int sn) {
            super.didReceiveData(result, device, dataMap, sn);
            //先判断是否为正确回调
            if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
                //首先从回调的数据中判断这个回调设备是否为当前界面的设备,通过唯一的mac地址
                if (device.getMacAddress().equals(mDevice.getMacAddress())) {
                  //判断dataMap是否为null
                    if (dataMap.get("data") != null) {
                        ConcurrentHashMap<String, Object> mtempData = (ConcurrentHashMap<String, Object>) dataMap.get("data");
                        if (mtempData.get("iswater") != null) {
                            iswater = (boolean) mtempData.get("iswater");
                        }
                        if (mtempData.get("open_off") != null) {
                            open_off = (boolean) mtempData.get("open_off");
                        }
                        mHandler.sendEmptyMessage(101);
                    }
                }
            }
        }
 };

2、 比如可以这样子做,实现回调和UI交互。

  • 如下所示,现在全局变量声明一个 弹窗 ProgressDialog 对象。当有数据回调时候,就把它显示出来,当回调回来码为正确的话(表示正确回调)就会把这个弹窗关闭,否则没有回调表示没有成功的话,一直在转。

   //弹窗
    private ProgressDialog mProgressDialog ;

    private GizWifiDeviceListener listener = new GizWifiDeviceListener() {
        @Override
        public void didReceiveData(GizWifiErrorCode result, GizWifiDevice device, ConcurrentHashMap<String, Object> dataMap, int sn) {
            super.didReceiveData(result, device, dataMap, sn);
            mProgressDialog =new ProgressDialog(GosDeviceControlActivity.this);
            mProgressDialog.setTitle("正在同步云端数据!");
            //弹窗设置不可点击
            mProgressDialog.setCancelable(false);
            //显示弹窗
            mProgressDialog.show();
            //先判断是否为正确回调
            if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
                //关闭弹窗
                mProgressDialog.dismiss();
                //首先从回调的数据中判断这个回调设备是否为当前界面的设备,通过唯一的mac地址
                if (device.getMacAddress().equals(mDevice.getMacAddress())) {
                    if (dataMap.get("data") != null) {
                        ConcurrentHashMap<String, Object> mtempData = (ConcurrentHashMap<String, Object>) dataMap.get("data");
                        if (mtempData.get("iswater") != null) {
                            iswater = (boolean) mtempData.get("iswater");
                        }
                        if (mtempData.get("open_off") != null) {
                            open_off = (boolean) mtempData.get("open_off");
                        }
                        mHandler.sendEmptyMessage(101);
                    }
                }
            }
        }
    };
  • 如果回调不成功,表示设备未能正常接受到数据,就这样显示效果啦!一直在转,转不停!

这里写图片描述


  • QQ交流群:434878850
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半颗心脏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值