设备控制分为两种方式,极速配网(NAN)控制和常规设备控制。极速配网(NAN)控制是在配网的过程中即可对设备进行控制,当前只有Hi3861芯片支持。常规设备控制,只有在设备配网成功之后才能进行设备控制。
跳转到设备控制界面
无论是进入到配网界面,还是进入到设备控制界面,都是首先由智慧生活基础服务拉起意图里配置好的Ability,再在onStart函数里面,解析传递过来的参数。关于参数解析,请参考设备配网的步骤1。
解析完成之后,再根据传递的参数不同,进行不同的跳转。
在“entry”目录下的“CommonOperatorUtil.java”文件中,关于跳转到设备控制界面,代码示例如下
private static final String BUNDLE_NAME = "{your package name}";
private static final String DEVICE_ABILITY_NAME = "{your package name}.ControlMainAbility";
private void openDevicePage() {
Intent intent = new Intent();
intent.setParam("deviceId", deviceId);
ElementName elementName = new ElementName("", BUNDLE_NAME, DEVICE_ABILITY_NAME);
intent.setElement(elementName);
intent.addFlags(Intent.FLAG_ABILITY_NEW_MISSION);
intent.addFlags(Intent.FLAG_INSTALL_ON_DEMAND);
mContext.startAbility(intent, 0);
}
NAN配网控制
- 在“device”目录下的“DeviceAbility.java”文件中,进入到控制界面后,在onStart函数里解析传递过来的参数,并进行NAN控制的注册,代码示例如下:
registerNanNetConfigStatusCallback() {
const commonInfo = {
sessionId: this.sessionId,
};
FANetConfig.registerNanNetConfigStatusCallback(commonInfo, (result) => {
if (result.code == 0) {
this.deviceId = result.data;
} else {
}
});
},
registerMsgReceive() {
const commonInfo = {
sessionId: this.sessionId,
nanDataType: 1
};
FANetConfig.registerMsgReceive(commonInfo, (value) => {
});
},
disconnectNan: function () {
const commonInfo = {
sessionId: this.sessionId
};
FANetConfig.disconnectDevice(commonInfo, (value) => {
});
},
1. 在“device”目录下的“index.js”文件中,下发设备控制命令,代码示例如下:
sendMessage: (serviceId, data) {
const commonInfo = {
sessionId: this.sessionId,
nanDataType: 1,
serviceId: serviceId,
hiLinkControlData: data
};
FANetConfig.sendMessage(commonInfo, '1', (value) => {
});
},
本文主要引用整理自官方文档。
|