23 小米IOT Spec协议接口API - MiEcosystem/NewXmPluginSDK GitHub Wiki
使用示例可查看GitHub https://github.com/MiEcosystem/NewXmPluginSDK plugProject下的Demo工程SpecDemo。
DeviceController包含了设备Spec协议的内容和设备控制相关的所有接口,通过以下接口获取实例:
/**
* ApiLevel 79
* 获取DeviceController
* DeviceController包含了协议的内容信息以及设备控制、属性获取、属性订阅等接口
*
* @param did
* @return
*/
public static DeviceController getDeviceController(String did) {
}
PropertyParam是对请求参数、返回value以及请求结果resultCode的封装,resultCode=0时代表该属性值获取成功。
/**
* ApiLevel 79
* 从服务器获取设备属性值
*
* @param context
* @param propertyParamList
*/
public void getSpecProperties(Context context, final List<PropertyParam> propertyParamList, Callback<List<PropertyParam>> callback) {
}
/**
* ApiLevel 79
* 设置设备属性值
*
* @param context
* @param propertyParam
* @param callback
*/
public void setSpecProperty(Context context, final PropertyParam propertyParam, Callback<Object> callback) {
}
/**
* ApiLevel 79
* 执行action
*
* @param context
* @param actionParam
* @param callback List<Object>为action执行成功返回的out
*/
public void doAction(Context context, final ActionParam actionParam, Callback<List<Object>> callback) {
}
订阅属性需要为每个订阅的属性设置listener,在MessageReceiver中收到push消息后调用onSubscribeData,然后在listener中处理属性变化即可,退出插件需要移除监听。
/**
* ApiLevel 79
* 订阅属性变化,每次只维持3分钟订阅事件
*/
public void subscribeProperty(DeviceStat deviceStat, List<PropertyParam> params, Callback<Void> callback) {
}
/**
* ApiLevel 79
* 取消订阅属性,在订阅后,再次订阅前取消,避免重复订阅
*/
public void unSubscribeProperty(DeviceStat deviceStat, List<PropertyParam> params, Callback<Void> callback) {
}
/**
* ApiLevel 79
* 处理订阅消息
*
* @param data
*/
public void onSubscribeData(String data) {
}
/**
* ApiLevel 79
* 添加property监听
*
* @param siid
* @param piid
* @param listener
*/
public void setPropertyListener(int siid, int piid, PropertyListener listener) {
}
/**
* ApiLevel 79
* 移除某个property监听
*
* @param siid
* @param piid
*/
public void removePropertyListener(int siid, int piid) {
}
/**
* ApiLevel 79
* 移除所有监听
*/
public void removeAllListener() {
}
/**
* ApiLevel 79
* 获取本地保存的属性值
*
* @param siid
* @param piid
* @return
*/
public Object getPropertyValue(int siid, int piid) {
}
/**
* ApiLevel 79
* 获取get property请求参数对象
*
* @param siid
* @param piid
* @return
*/
public PropertyParam newPropertyParam(int siid, int piid) {
}
/**
* ApiLevel 79
* 获取set property请求参数对象
*
* @param siid
* @param piid
* @param value
* @return
*/
public PropertyParam newPropertyParam(int siid, int piid, Object value) {
}
/**
* ApiLevel 79
* 获取action请求参数对象
*
* @param siid
* @param aiid
* @param ins
* @return
*/
public ActionParam newActionParam(int siid, int aiid, List<Object> ins) {
}
/**
* ApiLevel 79
* 获取serviceController
*
* @param siid
* @return
*/
public ServiceController getServiceController(int siid) {
}
/**
* ApiLevel 79
* 获取propertyController
*
* @param siid
* @param piid
* @return
*/
public PropertyController getPropertyController(int siid, int piid) {
}
/**
* ApiLevel 79
* 获取actionController
*
* @param siid
* @param aiid
* @return
*/
public ActionController getActionController(int siid, int aiid) {
}
/**
* ApiLevel 79
* 根据property name获取siid和piid
*
* @param propertyName
* @return
*/
public Pair<Integer, Integer> getPropertyIid(String propertyName) {
}
/**
* ApiLevel 79
* 根据action name获取siid和aiid
*
* @param actionName
* @return
*/
public Pair<Integer, Integer> getActionIid(String actionName) {
}