智能场景 UI 业务包

更新时间:2024-10-30 10:05:11下载pdf

涂鸦 智能场景 UI 业务包 安卓版的业务功能包括 智能场景 模块的 添加智能编辑智能 的业务逻辑和 UI 界面。

背景信息

智能场景分为 一键执行场景自动化场景,分别简称为 场景自动化

  • 场景:用户添加动作,手动触发。
  • 自动化:由用户设定条件,当条件触发后自动执行设定的动作。

涂鸦支持用户根据实际生活场景,通过设置气象或设备条件,当条件满足时,让一个或多个设备执行相应的任务。

接入组件

创建工程

  1. 在 Android Studio 中建立您的工程,接入 Cube SDK 并完成业务包 框架接入

    • 您的工程需要添加 Hilt 相关依赖才能使用场景业务包。请参考《谷歌开发者文档》Dependency injection with Hilt。具体插件之间的版本关联关系,请务必以 tuya-ui-bizbundle-android-demo 中 AGP、Hilt、Kotlin 的配套版本为准。
    • Hilt 套件的最低版本要求为 2.42,包括 Hilt 插件、Hilt 工件和 Hilt 注解处理器,如此方可正常编译。
  2. 若您的工程需要使用智能场景 UI 业务包,则需要在主工程的资源目录 res/values/values.xml 中,添加如下配置:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <bool name="is_scene_support">true</bool>
    </resources>
    
  3. 若您对场景数据多终端在线实时同步有强烈的诉求,建议您在登录态后使用场景业务前手动执行一次如下代码(应用存活周期内只需调用一次):

    SceneHomePipeLine().run()
    

配置 build.gradle


dependencies {
    api enforcedPlatform("com.thingclips.smart:thingsmart-BizBundlesBom:${biz_bom_version}")
    api ("com.thingclips.smart:thingsmart-bizbundle-scene")
}

服务接口

提供服务

场景业务包实现 IThingSceneBusinessService 以提供服务。

示例代码

// 查询场景业务包服务
IThingSceneBusinessService iThingSceneBusinessService = MicroContext.findServiceByInterface(IThingSceneBusinessService.class.getName());

新增场景

通过查询家庭 ID 进入场景添加页。

接口说明

public abstract void addSceneBean(Activity activity, long homeId, int requestCode);

参数说明

参数 类型 说明
activity Activity Activity 对象
homeId long 家庭 ID,您可以通过 家庭信息管理 相关接口查询
requestCode int 请求 code,在 onActivityResult 处返回

示例代码

if(null != iThingSceneBusinessService && homeId != 0) {
  iThingSceneBusinessService.addSceneBean(activity, homeId, requestCode);
}

编辑场景

通过查询场景数据和家庭 ID 进入场景编辑页面。

接口说明

进入编辑场景页。

public abstract void editSceneBean(Activity activity, long homeId, NormalScene sceneBean, int requestCode);

参数说明

参数 类型 说明
activity Activity Activity 对象
homeId long 家庭 ID,您可以通过 家庭信息管理 相关接口查询
sceneBean NormalScene 场景数据对象,您可以通过 智能场景 相关接口查询
requestCode int 请求 code,在 onActivityResult 处返回

示例代码

ThingHomeSdk.getSceneServiceInstance().baseService().getSimpleSceneAll(homeId,
                new IResultCallback<List<NormalScene>>() {

            @Override
            public void onSuccess(List<NormalScene> normalScenes) {
                if (!normalScenes.isEmpty()) {
                    NormalScene sceneBean = normalScenes.get(0);
                    if (null != iThingSceneBusinessService) {
                        iThingSceneBusinessService.editSceneBean(SceneActivity.this, homeId, sceneBean, requestCode);
                    }
                }
            }

            @Override
            public void onError(String errorCode, String errorMessage) {

            }
        });

设置地理位置

使用场景条件和生效时间段前,需要用户设置 App 的地理位置。如果没有设置,则无法在选择条件时自动查询城市信息。但是,用户还是可以在城市列表自行选择。

接口说明

public abstract void setAppLocation(double longitude, double latitude);

参数说明

参数 说明
longitude 经度,由您的 App 自行接入的相关三方地图提供
latitude 纬度,由您的 App 自行接入的相关三方地图提供

示例代码

if(null != iThingSceneBusinessService){
    iThingSceneBusinessService.setAppLocation(lng, lat);
}

设置 App 地图类

场景条件中的地理位置,如果不需要非中国大陆地区账号,就无需调用。其他国家或地区的账号需要设置地图类,不设置默认则调用查询中国大陆城市接口。

接口说明

public abstract void setMapActivity(Class<? extends Activity> clazz);

参数说明

参数 说明
clazz 地图 Activity 类对象,可以选择接入 地图服务 UI 业务包

示例代码

if(null != iThingSceneBusinessService){
    // 下述示例是涂鸦内置的地图包装(接入地图服务 UI 业务包则可使用)。您可以根据自己需求采用三方地图实现
    iThingSceneBusinessService.setMapActivity(com.thingclips.smart.map.generalmap.ui.GeneralMapActivity.class);
}

设置地图选点数据

接入地图类之后,您需要将地图选点数据发给 UI 业务包,用来更新条件地理位置信息。

接口说明

public abstract void saveMapData(double longitude, double latitude, String city, String address);

参数说明

参数 说明
longitude 经度
latitude 纬度
city 城市信息
address 地址信息

示例代码

if(null != iThingSceneBusinessService){
    iThingSceneBusinessService.saveMapData(lng, lat, city, address);
}