更新时间:2024-04-24 07:06:34下载pdf
设备定时业务能力包括:
定时业务的所有接口统一通过 IThingTimerManager
的实现类来调用。以设备定时为例,完成下面的步骤来实现定时业务。群组定时与设备定时一样,唯一区别在于入参是 groupId
。
只有当有家庭且家庭下存在设备或群组,才能实现定时业务。
获取定时管理类。
// 获取定时管理类
IThingTimerManager timerManager = ThingDeviceDetailKit.getInstance().getDeviceTimerManager();
当需要设备在某一个时间执行某个指令时,可以通过 addTimer()
接口为设备添加一个定时。
需要传入的参数如下:
参数 | 是否必传 |
---|---|
deviceId | 是 |
category | 是 |
time | 是 |
dps | 是 |
loops | 是 |
aliasName | 是 |
isOpen | 是 |
isAppPush | 是 |
callback | 是 |
TimerManagerBuilder builder = new TimerManagerBuilder.Builder()
.setDeviceId(deviceId)
.setCategory("schedule")
.setTime("12:12")
.setDps({"1":false})
.setLoops("0000000")
.setAliasName("aliasName")
.isOpen(true)
.isAppPush(true)
.setCallback(new IThingTimerCallBack() {
@Override
public void successful(@Nullable List<? extends AlarmTimerBean> list) {
// 添加成功之后,返回一个定时列表。列表里只有一个数据,就是当前添加成功的定时数据。
if (list!=null&&list.size()>0){
AlarmTimerBean alarmTimerBean = list.get(0);
// groupId 是设备的定时 ID
String groupId = alarmTimerBean.getGroupId();
}
}
@Override
public void fail(int i, @NonNull String s) {
}
})
.build();
timerManager.addTimer(builder);
当需要修改一个定时的信息时,可以通过 editTimer()
接口来完成。
修改定时需要传入的参数如下:
参数 | 是否必传 |
---|---|
deviceid | 是 |
timerId | 是 |
time | 是 |
loops | 是 |
aliasName | 是 |
isAppPush | 是 |
callback | 是 |
TimerManagerBuilder builder = new TimerManagerBuilder.Builder()
.setDeviceId(deviceId)
.setTime("12:32")
.setTimerId("xxxx")
.setDps({"1":false})
.setLoops("1000000")
.setAliasName("aliasName")
.isOpen(true)
.isAppPush(false)
.setCallback(new IThingTimerCallBack() {
@Override
public void successful(@Nullable List<? extends AlarmTimerBean> list) {
// 修改成功之后,返回一个定时列表。列表里只有一个数据,就是当前修改成功的定时数据。
if (list!=null&&list.size()>0){
AlarmTimerBean alarmTimerBean = list.get(0);
// groupId 是设备的定时 ID
String groupId = alarmTimerBean.getGroupId();
}
}
@Override
public void fail(int i, @NonNull String s) {
}
})
.build();
timerManager.editTimer(builder);
可以通过 updateTimerStatus()
接口,更新一个定时的状态。就像添加了一个闹钟,但并不希望它到时间执行一样。
更新定时状态需要传入的参数如下:
参数 | 是否必传 |
---|---|
deviceid | 是 |
timerId | 是 |
isOpen | 是 |
callback | 是 |
TimerManagerBuilder builder = new TimerManagerBuilder.Builder()
.setDeviceId(deviceId)
.setTimerId("xxxx")
.setCallback(new IThingTimerCallBack() {
@Override
public void successful(@Nullable List<? extends AlarmTimerBean> list) {
// 更新定时状态成功之后,会触发 successful 回调,但返回的 list 数据为 null。
}
@Override
public void fail(int i, @NonNull String s) {
}
})
.build();
timerManager.updateTimerStatus(builder);
如果不再需要定时,那可以通过 deleteTimer()
接口来删除。
删除定时需要传入的参数如下:
参数 | 是否必传 |
---|---|
deviceid | 是 |
timerId | 是 |
callback | 是 |
TimerManagerBuilder builder = new TimerManagerBuilder.Builder()
.setDeviceId(deviceId)
.setTimerId("xxxx")
.setCallback(new IThingTimerCallBack() {
@Override
public void successful(@Nullable List<? extends AlarmTimerBean> list) {
// 删除定时成功之后,会触发 successful 回调,但返回的 list 数据为 null。
}
@Override
public void fail(int i, @NonNull String s) {
}
})
.build();
timerManager.deleteTimer(builder);
如果要查看设备的定时数据,可以通过 getTimerList()
查询该设备下所有定时信息。
查询设备定时列表需要传入的参数如下:
参数 | 是否必传 |
---|---|
deviceid | 是 |
callback | 是 |
TimerManagerBuilder builder = new TimerManagerBuilder.Builder()
.setDeviceId(deviceId)
.setCallback(new IThingTimerCallBack() {
@Override
public void successful(@Nullable List<? extends AlarmTimerBean> list) {
// 请求成功之后,返回设备的定时列表
}
@Override
public void fail(int i, @NonNull String s) {
}
})
.build();
timerManager.getTimerList(builder);
上述的步骤是按照增改删查的思路一步步完成定时业务的。实际业务开发时,可灵活组合。更多信息,可以参考 业务拓展 SDK Demo 中的 定时业务模块。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈