Android开发SDK接入机智云,智能家居实现APP远程控制多设备
一.前言。
此框架只用了一周星期做了出来,因为对机智云的框架比较熟悉了 !期间SDK初始化出了问题,去咨询了机智云的官方人员,至于为什么要做此框架,因为在实际开中,我们发现机智云自动生成的代码,有各种我们用不到的强大功能,比如以下:
①、繁琐的登录注册功能,有时候我们仅仅想控制设备而已...
②、繁琐的各种我们用不到的企业开发者的推送功能,比如极光推送、百度推送....
③、繁琐的第三方登录,微信登录、QQ登录等...
④、哈哈,我们还想去掉那个机智云的广告,商城接口...
⑤、因为绝大部分开发者都是用8266,抛弃繁琐的要选择各种芯片的界面...
⑥、对于开发者来说,最主要的是耦合性太高了,一动代码全部都要动...
抛弃上面我们不需要的功能之后,我想主要实现以下几大功能即可:
①、实现自动匿名登录,没有各种第三方登录选择,无须手动点击“跳过”进去设备界面。
②、实现一键配网,去掉softAP模式配网,无须选择各种芯片,固定为乐鑫的esp8266。
③、一旦检测到了局域网的新设备,实现自动绑定设备。
④、工程不采用设计框架,解耦性强,依赖的架包是
'appcompat-v7:26.0.0-alpha1'
版本,全新的控件,全新的MD风格。⑤、开放接口给开发者,实现换颜色的功能。
⑥、开放修改设备的PK和PS接口、开发者的APP的Appid给开发者修改。
⑦、支持多设备添加在同一个APP,即一个APP控制多个设备,详情见Demo代码。
二 . 进阶版本界面欣赏。
- ①. 可以看到定时器的定时界面是一个漂亮的采集器;
- ②. 主界面有2种不同类型的设备。
二 . 进阶版本的开放接口修改。
- 首先上一张工程截图:
工程里面内嵌了可以控制2个产品的界面;
其硬件是8266,代码开源如下,需要需要调试项目的设备,私聊我,我开虚拟机你调试:
2.1 怎么样添加产品?
- 第一步 :
如果想完全替代为你的产品,首先在
Constant.java
文件,把 app id 和app sercret 替换为您的产品对应的属性;如果要把这个app作为2个或以上控制设备的话,确保你的全部设备的应用配置都要绑定在同一个产品的应用!
每个产品都有唯一的key 和 密钥 ,请依次按照下面顺序格式写入其他您产品信息;
//app id
public static final String APP_ID = "ba8298ff18f949ef9de43b0eabd7eaca";
//app sercret
public static final String APP_SECRET = "cea5cc1fa67b4affac803f43686c4ef9";
/*********************************
* 以下为各种产品信息
**********************************************/
//微信宠物屋产品Key
public static final String PET_PK = "3218bec508fb49109e2d3eb19f43154f";
//微信宠物屋产品密钥
public static final String PET_PS = "d66ae067aefc409989d7b5e0b0004dec";
//定时开关灯产品Key
public static final String TIMER_PK = "02ace125034540bfa64dc77bff1d45a8";
//定时开关灯产品密钥
public static final String TIMER_PS = "cb27cef9d72d41cf84174e1e14dd330e";
- 第二步 :
- 找到
MainAvtivity.java
下面的代码,下面的代码意义在于把产品信息初始化在SDK中,注意每个产品对应一个ConcurrentHashMap<String, String>
对象!
备注:
//此处初始化sdk
//这个是绑定app id和appSecret
ConcurrentHashMap<String, String> appInfo = new ConcurrentHashMap<>();
appInfo.put("appId", Constant.APP_ID);
appInfo.put("appSecret", Constant.APP_SECRET);
List<ConcurrentHashMap<String, String>> productInfo = new ArrayList<>();
//这个是绑定微信宠物屋的productKey和productSecret
ConcurrentHashMap<String, String> product = new ConcurrentHashMap<>();
product.put("productKey", Constant.PET_PK);
product.put("productSecret", Constant.PET_PS);
productInfo.add(product);
//这个是定时开关灯的productKey和productSecret
ConcurrentHashMap<String, String> product2 = new ConcurrentHashMap<>();
product2.put("productKey", Constant.TIMER_PK);
product2.put("productSecret", Constant.TIMER_PS);
productInfo.add(product2);
第三步 :
新建一个Activity , 继承
BaseDeviceControlActivity
,注意在 AndroidMenifest 注册 ;其对应的布局一定要有
com.qmuiteam.qmui.widget.QMUITopBar
导航栏,其在布局文件的代码直接为:
这个Activity的
onCreat()
方法里面,必须初始化上面的QMUITopBar,见下面的initView()
:
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topBar"
app:qmui_topbar_bg_color="@color/colorPrimary"
app:qmui_topbar_need_separator="true"
android:layout_width="match_parent"
android:layout_height="?attr/qmui_topbar_height" />
private void initView() {
//显示状态返回箭头
//设置标题,如果备注名为空则显示产品云端注册名字,否则显示备注名
qmuiTopBar = findViewById(R.id.topBar);
qmuiTopBar.setTitle(gizWifiDevice.getAlias().isEmpty() ? gizWifiDevice.getProductName() : gizWifiDevice.getAlias());
qmuiTopBar.addLeftImageButton(R.mipmap.ic_back, R.id.topbar_left_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
第四步 :
- 初始化一个Activity文件基本好了之后,我们的逻辑控制跳转修改,在
MainActivity.java
里面代码,把下面截图的switch里面修改即可,原理是根据产品的PK数值跳转的:
- 初始化一个Activity文件基本好了之后,我们的逻辑控制跳转修改,在
- 第五步 :
细节增加,在BaseDeviceControlActivity.java
文件里面的onDestroy()
方法里面,添加 取消订阅设备操作,否则无法新界面无法同步设备!
//取消订阅
@Override
protected void onDestroy() {
super.onDestroy();
gizWifiDevice.setListener(null);
switch (gizWifiDevice.getProductKey()) {
case Constant.PET_PK:
gizWifiDevice.setSubscribe(Constant.PET_PS, false);
break;
case Constant.TIMER_PK:
gizWifiDevice.setSubscribe(Constant.TIMER_PS, false);
break;
}
}
第六步 :
剖析云端下发数据?在控制界面重写
didReceiveData()
方法即可!
项目文件目录结构图:
Android开发SDK接入机智云,智能家居实现APP远程控制多设备
注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权
Android开发SDK接入机智云,智能家居实现APP远程控制多设备的更多相关文章
- SDK接入(1)之Android Facebook SDK接入
SDK接入(1)之Android Facebook SDK接入 由于游戏已上线,且处于维护阶段,所以有空写写各种SDK接入过程和遇到的问题,也当作一种工作总结.SDK接入主流分为这么几类,登录.支付. ...
- Mac android 开发 sdk配置和手机连接
本文适合已经很熟悉android开发的人员: 首先安装Mac版的eclipse 其次是android sdk的准备: 由于android sdk在线更新很不方便,所以可以选择复制:准备好Mac下的an ...
- Android开发中Eclipse里的智能提示设置
今天开始学习一下Android开发,直接在Android Developers下载的一个开发工具包,然后再下了一个JDK,配置完环境变量等一系列的工作后环境就搭建好了,在新建好第一个Android项目 ...
- Android开发中查看未root真机的app数据库
在Android开发中,如果用到数据库来储存数据,那么难免就要查看数据库中的内容,可是对于未root的真机来说,查看数据库就不是那么容易了,如果仅仅为了查看数据库再把手机root了,有点得不偿失,所以 ...
- Android开发 SDK NDK下载
2014.7版本 ADT Bundle http://dl.google.com/android/adt/adt-bundle-windows-x86-20140702.ziphttp://dl.go ...
- Android 微博sdk接入授权指南
1:首先在微博官方注册账号,官方地址是:http://open.weibo.com/然后创建一个新应用. 2:当然我们得现在自己电脑上创建一个应用,例如包名叫com.winorout.weib ...
- Android开发中,系统是如何区分不同的App的(转自csdn)
转自:http://bbs.csdn.net/topics/391868975?page=1 1判断是否为同一个app,仅仅是包名,签名是保证你的app不被第三方恶意替换.当包名相同,但签名不同时,系 ...
- 【Android开发】微信精选,文章资讯类App开发记录总结
缘起 微信精选的App开发来源是在聚合数据上看到了有免费的微信精选的数据接口,无限调用.相对于其他的诸如违章查询,医药查询,NBA赛事等等,我感觉还是微信文章精选这个数据接口离我最近,所以想着拿着个数 ...
- Android开发5:应用程序窗口小部件App Widgets的实现
前言 本次主要是实现一个Android应用,实现静态广播.动态广播两种改变 widget内容的方法,即在上篇博文中实验的基础上进行修改,所以此次实验的重点是AppWidget小部件的实现啦~ 首先,我 ...
随机推荐
- 微信小程序自动去除input空格的方法
当用户输入账号或者密码的时候,可能会有输入空格的情况,但是实际需要是不能够有空格的,所以我们要做一个去除空格,并且适应所有input的name参数的方法,下面请看源码: wxml: <input ...
- 关于docker swarm有满满干货的一篇文章,讲了如何用service来作nginx负责proxy已级无缝升级策略
http://www.cnblogs.com/atuotuo/p/6260591.html ================================= $docker network crea ...
- AC日记——Collectors Problem uva 10779
UVA - 10779 思路: 最大流: s向所有的贴纸的种类连边,流量为Bob拥有的数量: 然后,Bob的朋友如果没有这种贴纸,则这种贴纸向bob的朋友连边,容量1: 如果bob的朋友的贴纸很多大于 ...
- Angular2响应式表单-翻译与概括官网REACTIVE FORMS页面
本文将半翻译半总结的讲讲ng2官网的另一个未翻译高级教程页面. 原文地址. 文章目的是使用ng2提供的响应式表单技术快速搭出功能完善丰富的界面表单组件. 响应式表单是一项响应式风格的ng2技术,本文将 ...
- Hystrix熔断器(六)
一.分布式面临的问题 复杂的分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败雪崩效应多个微服务之间调用的时候,假设服务A调用微服务B和微服务C, 微服务B和微服务C又 ...
- 二分+Dfs【p1902】刺杀大使
题目描述--->p1902 刺杀大使 题意概括: 找一条路径,使得从第1行到第n行路径的最大值最小. 分析: 题目概括出来,很容易想到二分. 求最大值最小,因此我们可以对最大伤害值进行二分. 如 ...
- 素数路(prime) (BFS)
问题 C: 素数路(prime) 时间限制: 1 Sec 内存限制: 64 MB提交: 8 解决: 5[提交][状态][讨论版] 题目描述 已知一个四位的素数,要求每次修改其中的一位,并且要保证修 ...
- ubuntu 进入 pycharm(社区版)
先进入到pycharm所在的目录,然后进入bin 然后./pycharm.sh 例如,我把pycharm 放在桌面上 su ➜ xushukui cd '/home/xushukui/桌面/pycha ...
- 洛谷 P3690 Link Cut Tree
题目背景 动态树 题目描述 给定N个点以及每个点的权值,要你处理接下来的M个操作.操作有4种.操作从0到3编号.点从1到N编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor ...
- [BZOJ4538]网络
今天打比赛,毒瘤yww把这题出到$n,m\leq 5\times10^5$,因为不会写整体二分所以来写坑爹的$O\left(n\log_2n\right)$做法 考虑按重要度建权值线段树(相同权值的请 ...