Demo App主要介绍App的开发流程,以及App的业务逻辑。在您开发自己的App前,建议您按照本文档完成Demo App的操作。
前提条件
- 已在生活物联网平台创建了对应的产品,并完成产品功能定义、配置App等相关操作。
- 已在生活物联网平台创建了一个自有品牌App,并完成Demo App的源码下载。详细操作请参见创建自有App。
DemoApp 源码结构说明
App模块负责应用的业务逻辑,其中包括了Demo对应的功能演示:设备本地发现、设备配网、设备绑定和设备状态的获取和控制功能。java/com/aliyun/iot的详细子目录介绍如下。
- ilop/startpage: 演示了如何自定义国家选择页面
- ilop/demo/SDKInitHelper.java:演示了使用统一接口初始化各种SDK
- aep/oa:演示了如何自定义手机区域码选择页面
- aep/sdk/receiver:演示了如何利用广播接收器处理推送消息和通知
- ilop/demo/page/login3rd下
- AuthCodeFragment.java:演示了如何用三方账号进行授权登录
- OALoginActivity.java:演示了如何自定义登录页面
运行Demo App
介绍通过Android Studio导入Demo App,并构建APK的操作。
- 打开Android Studio,选择,导入Demo App源码。
- 集成安全图片,操作请参见集成安全图片。
说明 安全图片请勿重命名,否则会导致SDK初始化失败。请您下载后直接放到App代码工程下。
- (可选)Demo App中添加摄像头设备。
- 打开Demo App工程,在build.gradle中找到dependencies,添加Link Visual面板的引用。
implementation project(':ipcview')
- 解注释Link Visual面板初始化代码。
在src\main\java\com\aliyun\iot\ilop\demo\DemoApplication.java中,去掉以下代码前的注释符。
IPCViewHelper.getInstance().init(this,"2.0.0");
- 解注释跳转Link Visual的代码。
在src\main\java\com\aliyun\iot\ilop\demo\page\ilopmain\HomeTabFragment.java中,去掉以下代码前的注释符。
Intent intent = new Intent(getActivity(), IPCameraActivity.class);
intent.putExtra("iotId", iotId);
intent.putExtra("appKey", EnvConfigure.getEnvArg(EnvConfigure.KEY_APPKEY));
startActivity(intent);
- 替换产品的ProductKey。
将src\main\java\com\aliyun\iot\ilop\demo\page\ilopmain\HomeTabFragment.java中,示例ProductKey替换为自己产品的ProductKey。
- 在Demo App目录下,执行以下命令构建APK。
./gradlew clean build
说明
- 请配置JDK为1.8版本。
- 3.0.0版本的打包插件,需要 Android Studio 3.0以上的版本支持。
- 3.0.0版本的打包插件,目前需要访问Google的仓库,请注意网络环境。
Demo App业务逻辑介绍
默认Demo App配置为官方项目和默认支持的几类设备。
- 选择国家/地区。
登录之前您须先选择登录国家/地区。
说明 如果您需要在国内/海外区域之间切换,切换后需重启App以生效。
- 注册或登录账号。
App启动后会显示如下登录页界面。
- 单击免费注册,弹出注册方式。
- 输入要注册的手机号码或邮箱,并单击下方发送短信校验码。
- 输入收到的校验码,单击下一步。
- 设置密码完成登录。
- 切换App的语言。
在中切换App的语言,界面如下图所示。
说明 切换App语言后将跳转到登录界面,用户需要重新登录后才生效。
- 设置调试界面。
ebugTabFragment调试界面,调用com.aliyun.iot.ilop.demo.view.DebugLayout布局,提供以下功能。
- API通道:API网管调试
- 长链接通道:长链接通道调试
- 账号和用户:登录、退出
- 移动推送SDK:可以查看AppKey、ClientID、DeviceID等信息
BoneMobile插件调试分为:
- 控制虚拟设备。
- 进入主界面,如下图所示。
如果直接扫码下载demoAPP体验,登录后会默认创建5个虚拟设备。
如果是下载代码编译运行,上面显示的5个虚拟设备,并不是默认创建的,需要自己更改代码,在HomeTabFragment里面,将自己项目内创建的产品productKey填入下面的pks,再编译运行,才可以创建和体验虚拟设备。
/**
* 将自己项目内的pk填入,可以体验虚拟设备
*/
//String[] pks = new String[]{"a1AzoSi5TMc", "a1B6cFQldpm", "a1XoFUJWkPr", "a1nZ7Kq7AG1", "a1OX20YJSLk"};
String[] pks = new String[]{};
- 单击任意一个设备,进入相应的设备面板界面。
- 添加设备。
- 单击首页右上角加号。
- 选择待添加的设备,进入添加设备界面。
添加设备支持以下两种方式。
- 通过产品列表的形式进行配置(如上图支持添加的设备)
- 通过本地网络发现的设备,或者有支持零配配网方案的设备,如上图本地发现设备(如果能发现到本地设备,则会自动显示出来)。
说明 通过产品列表添加需要使用官方项目对应的接入产品,这一步目前并没有真实设备可以使用;如果想体验这个流程,建议通过自主研发App的形式来完成。
虚拟创建产品的设备
在没有真实设备可以走通链路的情况下,可以使用虚拟设备进行体验和开发。下面介绍如何为您创建的产品虚拟设备。
- 打开Demo工程com/aliyun/iot/ilop/demo/page/ilopmain/下的HomeTabFragment.java文件。
- 查找关键字
pks
,快速定位待修改的位置。
//注册虚拟设备
Set<String> set = new HashSet<String>();
ArrayList<String> deviceStrList = new ArrayList<>();
for (DeviceInfoBean deviceInfoBean : deviceInfoBeanList) {
set.add(deviceInfoBean.getProductKey());
deviceStrList.add(deviceInfoBean.getProductKey() + deviceInfoBean.getDeviceName());
}
mBundle.putStringArrayList("deviceList", deviceStrList);
//noinspection MismatchedReadAndWriteOfArray
String[] pks = new String[]{/*"a1xxxxc", "a1xxxxxm", "a1xxxxr", "a1xxxx1", "a1xxxxk"*/};
mRegisterCount = 0;
mVirtualCount = 0;
//noinspection RedundantOperationOnEmptyContainer
for (String pk : pks) {
if (set.add(pk)) {
mRegisterCount++;
//registerVirtualDevice(pk);
addVirtualDevice(pk);
}
}
- 在控制台上获取待体验产品的productKey。
- 替换productKey。
将
String[] pks = new String[]{/*"a1xxxxc", "a1xxxxxm", "a1xxxxr", "a1xxxx1", "a1xxxxk"*/};
中的默认的productKey替换为自己产品的productKey,示例如下。
String[] pks = new String[]{/*"xxxx", "xxxxx"*/};
说明 每个产品可以申请1个虚拟设备,多个产品productKey之间用逗号间隔。
- 重新登录App,即可使用虚拟设备体验您创建的产品的控制。