物联网平台机智云Android开源框架入门之旅(五) 分析怎么样把云端设备的信息状态同步到手机显示。...

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

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

  • 第一篇:认识开源框架结构,导入PK、APP的id和secret。

  • 第二篇:详细分析在设备列表的代码块,如何修改自定义的设备图片。

  • 第三篇 : 分析设备详情界面的中如何发送各种指令到云端:boolean、int、String类型。

  • 第四篇 : 分析怎么做好自己的指令是否成功发送到云端对应的逻辑处理

  • 第五篇 : 分析怎么样把云端设备的信息状态同步到手机显示。

  • 第六篇 :如何修改设备的名字,并且添加描述信息。

1、 认识无所不在的类 Gi

1 、何等重要的一个类 GizWifiDeviceListener.class ()。

  • 如果你从头到尾认真的看了系列教材,相信学习本章内容你不会吃力。因为我们从云端设备信息状态同步也是通过这个类 GizWifiDeviceListener.class的。其重要的回调方法在上个章节可以详细了解。

这里写图片描述

  • 那本章节我以问题回答形式来讲解如何把数据处理并显示出来!
  • 问题 一:怎么从云端获取到数据呢?设备上报数据,会发送到手机吗? 

    答: 同样地,我们在做上图看到“GizWifiDevice 类提供的所有回调接口”,这句话其实我本人怀疑是打错了!应该是“GizWifiDeviceListener”,于是我们就知道我们是也是从这个类获取数据的,每当设备上报数据,云端都是会通过此来回报给APP。

  • 问题 二:既然也是从GizWifiDeviceListener类的获取数据,那获取到的数据是什么格式呢? 
     答: 同样地,这里我肯定和大家说。这是获取的是JSON数据格式,如下,data是最里面的一个键,然后对应里面的就是我们所定义的数据点了,比如 “waterprogress”就是我定义的一个 int类型的数据点,”open_off” 和 “iswater”都是布尔类型的数值点,其后面的表示该值。
     {   data = {  waterprogress=153 , open_off=false , iswater=true}  }
  • 1
  • 问题 三:既然从云端获取到数据,那应该怎么剖析? 
     答: 上面提到这是Json数据格式,对于在任何语言下,都是很容易剖析的。比如我们从云端获取到了的数据map,就经过以下的剖析就可以啦!
      try {
            JSONObject jsonObject1 = new JSONObject(map);
                //解析boolean类型
               boolean iswater= jsonObject1.getBoolean("iswater");
                //解析 int类型
              int  progress= jsonObject1.getInt("waterprogress");
                //解析 String类型
              String  num= jsonObject1.getString("num");

            } catch (JSONException e) {
                e.printStackTrace();
            }
  • 问题四:既然从云端获取到数据,那应该怎么显示呢? 
     答: 上面已经可以获取到数据了 ! 记得 拿到了数据立刻显示出来!通过 Handler机制显示出来哦!否则会阻塞线程,说不定会闪退APP呢!如图:
private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            //更新UI
            if (msg.what == 101) {
                if (iswater) {
                    iv_show.setBackgroundResource(R.drawable.ic_openlight);
                } else {
                    iv_show.setBackgroundResource(R.drawable.ic_offlight);
                }
                if (open_off) {
                    tv_show.setText("有水啦!");
                    tv_show.setTextColor(getResources().getColor(R.color.black));
                } else {
                    tv_show.setText("无水!");
                    tv_show.setTextColor(getResources().getColor(R.color.tomato));
                }
            }
        }
    };

  private GizWifiDeviceListener mGizWifiDeviceListener = 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) {
                if (dataMap.get("data") != null) {
                  ConcurrentHashMap<String, Object> map = (ConcurrentHashMap<String, Object>) dataMap.get("data");
                    isHaveWater = (boolean) map.get("Infrared");
                    isOpen= (boolean) map.get("open");
                    waterProgress = (Integer) map.get("waterprogress");
                    mHandler.sendEmptyMessage(UPDATALIST);
                }
            }
        }
    };
  • QQ群:434878850

转载于:https://my.oschina.net/iotgizwits/blog/1570477

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值