product = new ConcurrentHashMap<>();
product.put("productKey", Constant.PET_PK);
product.put("productSecret", Constant.PET_PS);
productInfo.add(product);
//这个是定时开关灯的productKey和productSecret
ConcurrentHashMapproduct2 = 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()`:
```
```
```
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数值跳转的:
![](/contentImages/image/20180416/YKDaLtNGvbS9ERnPuZG.png)
----------
- 第五步 :
细节增加,在`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()`方法即可!
----------
![](/contentImages/image/20180416/YKDaLtNGvbS9ERnPuZG.png)
###项目文件目录结构图:
![](/contentImages/image/20180416/LzQXKZT9ASwxYIxN3KU.jpg)