智能场景 UI 业务包

更新时间:2023-07-03 01:49:35下载pdf

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

背景信息

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

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

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

接入组件

创建工程

在 Android Studio 中建立您的工程,接入智能生活 SDK 并完成业务包 框架接入

您的工程需要添加 Hilt 相关依赖才能使用场景业务包。请参考《谷歌开发者文档》Dependency injection with Hilt

配置 build.gradle

dependencies {
  implementation 'com.thingclips.smart:thingsmart-bizbundle-scene:2.0.0-cube.2'
}

服务接口

提供服务

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

示例代码

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

新增场景

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

接口说明

public abstract void addSceneBean(Activity activity, long homeId, int requestCode);
  • 5.0.0 版本 SDK 开始,可通过接口 iThingSceneBusinessService.addSceneBean 新增场景,onActivityResult 接收的回参类型是 NormalScene

参数说明

参数 类型 说明
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);
  • 5.0.0 版本 SDK 开始,可通过接口 iThingSceneBusinessService.editSceneBean 编辑场景,onActivityResult 接收的回参类型是 NormalScene

参数说明

参数 类型 说明
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 类对象

示例代码

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);
}