收藏官网首页
查看: 2057|回复: 19

[分享] 【超简单】教你如何用机智云开源框架打造AndroidAPP

  • TA的每日心情
    开心
    2017-4-15 23:50
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    4

    主题

    25

    帖子

    800

    积分

    高级会员

    Rank: 4

    积分
    800
    发表于 2017-1-3 15:32:01 | 显示全部楼层 |阅读模式
    汉枫LPB120模块
    本帖最后由 Genius 于 2017-1-11 12:43 编辑

    第一步:我们要下载开源框架,这样子做起来会非常简单(开源框架下载),下载完成后导入eclipse,如果你用的是Android Studio,那就要百度一下怎么导入了。
    第二步:改sdk版本号,因为你下载的包可能跟机智云开发时用的版本可能不一样,我的是19,根据自己的环境修改
    1.png

    第三步:修改Json文件,在/GOpenSource_AppKit/assets/UIConfig.json下,首先我们要先创建一个APP,然后把app_id和app_secret填进去,如下图所示:

    6.png 5.png


    第四步:找到res/layout文件夹下面的:activity_gos_device_control.xml面局文件,我们拖一个开关进来,然后再添加id,如下图所示:
    2.png 3.png
    第五步:加入控制代码。找到/GOpenSource_AppKit/src/com/gizwits/opensource/appkit/ControlModule/GosDeviceControlActivity.java
    在里面加入控制代码:
    我们先写一个控制函数:
    1. /**
    2.          * 发送指令
    3.          *
    4.          * @param key
    5.          *            数据点对应的标识名
    6.          * @param value
    7.          *            需要改变的值
    8.          */
    9.         private void sendCommand(String key, Object value) {
    10.                 int sn = 5;
    11.                 ConcurrentHashMap<String, Object> hashMap = new ConcurrentHashMap<String, Object>();
    12.                 hashMap.put(key, value);
    13.                 device.write(hashMap, sn);
    14.                 Log.i("Apptest", hashMap.toString());
    15.         }
    复制代码
    机智云的控制其实思想其实就是对Map数据的改变和读取。APP和MCU一起对Map进行改变。所以我们只要改变里面的值,就可以完成控制。
    1. private void initView() {
    2.    btn_on = (ToggleButton) findViewById(R.id.btn_on);
    3. <blockquote>btn_on.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    复制代码
    这样就实现了对一个灯的控制。
    那现在我有这样一个需求,我上一次开了灯,但是我把APP关了,我现在重新打开,但是现在UI上显示灯是关的,实际上是开的,那我点一个这个按键,开灯,此时灯还是开的。再点一下才是关灯。那我怎么读取灯的状态呢?
    下面就来说一下怎么去读取状态并更新UI的这么一个功能。
    首先,我们要设置一个**,里面有回调函数:
    1. /** 设备** */
    2.         private GizWifiDeviceListener deviceListener = new GizWifiDeviceListener() {
    3.                 // 接收数据回调
    4.                 public void didReceiveData(GizWifiErrorCode result,
    5.                                 GizWifiDevice device,
    6.                                 ConcurrentHashMap<String, Object> dataMap, int sn) {
    7.                         Message msg = new Message();
    8.                         if (GizWifiErrorCode.GIZ_SDK_SUCCESS != result) {
    9.                                 // 查询成功
    10.                         } else {
    11.                                 //查询失败
    12.                         }
    13.                         // 已定义的设备数据点,有布尔、数值和枚举型数据
    14.                         if (dataMap.get("data") != null) {
    15.                                 deviceStatu = (ConcurrentHashMap<String, Object>) dataMap
    16.                                                 .get("data");
    17.                                 // 根据标识名,在回调的map中找到设备上报的值
    18.                                 if (deviceStatu.get("switch_onoff") != null) {
    19.                                         // 根据设备上报的值更改按钮的图标
    20.                                         msg.what = UPDATE_UI;
    21.                                         handler.sendMessage(msg);
    22.                                 }
    23.                         }
    24.                 }
    25.         };
    复制代码
    didReceiveData(GizWifiErrorCode result,GizWifiDevice device,ConcurrentHashMap<String, Object> dataMap, int sn)是回调函数。
    7.png
    这里面dataMap.get("data"),是读取数据的意思,不是叫你把data改成你想要读的那个值。然后我们还要调用这个监听事件,否则不起作用。
    1. private void initDevice() {
    2.                 Intent intent = getIntent();
    3.                 device = (GizWifiDevice) intent.getParcelableExtra("GizWifiDevice");
    4.                 device.setListener(deviceListener);
    5.                 deviceStatu = new ConcurrentHashMap<String, Object>();
    6.                 Log.i("Apptest", device.getDid());
    7.         }
    复制代码
    然后再用Handler去更新UI,安卓里面不能用Theard去更新,程序会狗带。
    1. private Handler handler = new Handler() {
    2.                 public void handleMessage(Message msg) {
    3.                         super.handleMessage(msg);
    4.                         switch (msg.what) {
    5.                         case UPDATE_UI:
    6.                                 updataUI();
    7.                                 break;
    8.                         }
    9.                 };
    10.         };
    复制代码
    这样就可以读到数据了,但是还有一个问题,就是如果只是退出了当前的Activity,没有退出APP时,再次进入,UI不会更新。此时就要重写这一个函数:
    1. @Override
    2.         protected void onDestroy() {
    3.                 super.onDestroy();
    4.                 // 退出控制页面,取消设备订阅
    5.                 device.setSubscribe(false);
    6.         }
    复制代码
    这样就大功告成了。本人小白,初学Android,大神轻喷。

    f28d3b150c53a8c64885c2bdf102c2e0.jpg

    本帖被以下淘专辑推荐:

  • TA的每日心情
    开心
    2017-4-19 09:44
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    343

    主题

    772

    帖子

    3030

    积分

    社区运营

    Rank: 8Rank: 8

    积分
    3030
    发表于 2017-1-3 16:27:03 | 显示全部楼层
    好喜欢楼主的分享,浅显易懂,还实用!!!  

    满满的干货~~
    1、机智云QQ群: 287087942
    机智云爱好者-APP开发群: 599735135
    QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
    2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-iot
    关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

    该用户从未签到

    0

    主题

    2

    帖子

    17

    积分

    新手上路

    Rank: 1

    积分
    17
    发表于 2017-1-6 17:27:20 | 显示全部楼层
    开源框架下载下来   httpclient  还报错!  httpclient  的包都没有?

    点评

    不会吧,我的很正常,可以编译,但是在模拟器上不能运行,要在物理机上运行。  详情 回复 发表于 2017-1-6 17:35
  • TA的每日心情
    开心
    2017-4-15 23:50
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    4

    主题

    25

    帖子

    800

    积分

    高级会员

    Rank: 4

    积分
    800
     楼主| 发表于 2017-1-6 17:35:30 | 显示全部楼层
    Android开发 发表于 2017-1-6 17:27
    开源框架下载下来   httpclient  还报错!  httpclient  的包都没有?

    不会吧,我的很正常,可以编译,但是在模拟器上不能运行,要在物理机上运行。

    该用户从未签到

    0

    主题

    4

    帖子

    92

    积分

    注册会员

    Rank: 2

    积分
    92
    发表于 2017-1-6 19:10:07 | 显示全部楼层
    机智云开发者福利,WiFi模块“带”回家
    谢谢分享,刚刚接触机智云
  • TA的每日心情
    开心
    2017-5-2 09:23
  • 签到天数: 4 天

    连续签到: 2 天

    [LV.2]偶尔看看I

    7

    主题

    37

    帖子

    701

    积分

    高级会员

    Rank: 4

    积分
    701
    发表于 2017-1-12 15:26:00 | 显示全部楼层
    PK不用写人APP吗?
  • TA的每日心情
    开心
    2017-4-15 23:50
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    4

    主题

    25

    帖子

    800

    积分

    高级会员

    Rank: 4

    积分
    800
     楼主| 发表于 2017-1-12 20:51:11 | 显示全部楼层

    什么意思?没看懂,不用人写APP?

    点评

    我是说app里不用把pk写进去吗?  详情 回复 发表于 2017-1-13 17:59
  • TA的每日心情
    开心
    2017-5-2 09:23
  • 签到天数: 4 天

    连续签到: 2 天

    [LV.2]偶尔看看I

    7

    主题

    37

    帖子

    701

    积分

    高级会员

    Rank: 4

    积分
    701
    发表于 2017-1-13 17:59:44 | 显示全部楼层
    iDea 发表于 2017-1-12 20:51
    什么意思?没看懂,不用人写APP?

    我是说app里不用把pk写进去吗?
  • TA的每日心情
    开心
    2017-4-15 23:50
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    4

    主题

    25

    帖子

    800

    积分

    高级会员

    Rank: 4

    积分
    800
     楼主| 发表于 2017-1-13 20:38:20 | 显示全部楼层
    沉睡中的king 发表于 2017-1-13 17:59
    我是说app里不用把pk写进去吗?

    我发现写没写都可以运行,但是我没试过其他项目,我只在MCU运行过一个项目,所以不知道写不写的区别

    点评

    一个app能不能识别两个不同PK的设备  详情 回复 发表于 2017-1-16 23:40
  • TA的每日心情
    开心
    2017-5-2 09:23
  • 签到天数: 4 天

    连续签到: 2 天

    [LV.2]偶尔看看I

    7

    主题

    37

    帖子

    701

    积分

    高级会员

    Rank: 4

    积分
    701
    发表于 2017-1-16 23:40:38 | 显示全部楼层
    教您5分钟接入机智云,实现傻瓜式开发
    iDea 发表于 2017-1-13 20:38
    我发现写没写都可以运行,但是我没试过其他项目,我只在MCU运行过一个项目,所以不知道写不写的区别 ...

    一个app能不能识别两个不同PK的设备

    点评

    这个功能是可以实现的,很简单, 都不用你写代码 具体参考:http://club.gizwits.com/thread-5261-1-1.html  详情 回复 发表于 2017-4-19 11:17

    该用户从未签到

    6

    主题

    26

    帖子

    248

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    248
    发表于 2017-3-2 11:39:44 | 显示全部楼层
    下载了开源框架,导入eclipse编译报错;怎么回事
  • TA的每日心情
    开心
    2017-4-15 23:50
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    4

    主题

    25

    帖子

    800

    积分

    高级会员

    Rank: 4

    积分
    800
     楼主| 发表于 2017-3-2 19:18:59 | 显示全部楼层
    GKXW 发表于 2017-3-2 11:39
    下载了开源框架,导入eclipse编译报错;怎么回事

    这个我还没试过,你改一下SDK版本号试试。你可以找一下机智云的技术支持。

    该用户从未签到

    6

    主题

    26

    帖子

    248

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    248
    发表于 2017-3-6 17:07:15 | 显示全部楼层

    该用户从未签到

    6

    主题

    26

    帖子

    248

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    248
    发表于 2017-3-6 17:08:34 | 显示全部楼层
    上述图片中的界面是在eclipse中打开的吗?怎么打开?
  • TA的每日心情
    开心
    2017-4-15 23:50
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    4

    主题

    25

    帖子

    800

    积分

    高级会员

    Rank: 4

    积分
    800
     楼主| 发表于 2017-3-6 19:25:02 | 显示全部楼层
    教您5分钟接入机智云,实现傻瓜式开发
    GKXW 发表于 2017-3-6 17:08
    上述图片中的界面是在eclipse中打开的吗?怎么打开?

    你还是去看一下安卓的基本教程吧,这个问题太简单了,而且我上面也有写。
  • TA的每日心情
    擦汗
    前天 00:32
  • 签到天数: 12 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    33

    主题

    101

    帖子

    1011

    积分

    实习版主

    Rank: 7Rank: 7Rank: 7

    积分
    1011
    发表于 2017-3-25 18:58:57 | 显示全部楼层
    iDea 发表于 2017-3-2 19:18
    这个我还没试过,你改一下SDK版本号试试。你可以找一下机智云的技术支持。 ...

    确实是报错。 我这边也是。   版本号已经改过了。。。
    精通C、C++、Java、C#、VB、HTML、Delphi、JavaScript、PHP等语言的拼写,熟练PhotoShop、Illustrator CS、CorelDraw、Flash CS、AutoCAD、Office等软件的卸载,掌握Windows Server、Unix、Lunix等系统的开关机
  • TA的每日心情
    擦汗
    前天 00:32
  • 签到天数: 12 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    33

    主题

    101

    帖子

    1011

    积分

    实习版主

    Rank: 7Rank: 7Rank: 7

    积分
    1011
    发表于 2017-3-26 16:21:28 | 显示全部楼层
    QQ截图20170326162046.jpg
    改了SDK版本的情况下的报错。。。   
    精通C、C++、Java、C#、VB、HTML、Delphi、JavaScript、PHP等语言的拼写,熟练PhotoShop、Illustrator CS、CorelDraw、Flash CS、AutoCAD、Office等软件的卸载,掌握Windows Server、Unix、Lunix等系统的开关机
  • TA的每日心情
    开心
    2017-4-19 09:44
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    343

    主题

    772

    帖子

    3030

    积分

    社区运营

    Rank: 8Rank: 8

    积分
    3030
    发表于 2017-4-19 11:17:04 | 显示全部楼层
    沉睡中的king 发表于 2017-1-16 23:40
    一个app能不能识别两个不同PK的设备

    这个功能是可以实现的,很简单, 都不用你写代码

    具体参考:http://club.gizwits.com/thread-5261-1-1.html

    1、机智云QQ群: 287087942
    机智云爱好者-APP开发群: 599735135
    QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
    2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-iot
    关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息
  • TA的每日心情
    奋斗
    2017-5-13 19:47
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]初来乍到

    3

    主题

    15

    帖子

    148

    积分

    注册会员

    Rank: 2

    积分
    148
    发表于 2017-5-13 19:15:27 | 显示全部楼层
    能不能再虚拟设备上运行????

    该用户从未签到

    0

    主题

    1

    帖子

    9

    积分

    新手上路

    Rank: 1

    积分
    9
    发表于 6 天前 | 显示全部楼层
    免费使用STM32、APP自动代码生成工具
    楼主爸爸,在吗
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /6 下一条

    QQ | 关注我们|加入QQ群

    © 2011-2016 Gizwits ( 粤ICP备11090211号 )

    快速回复 返回顶部 返回列表