看板卡片类SDK使用

修改历史

日期 版本号 修改内容
2026.04.06 v1.0.1 补充 IALinkCallBack 接口方法说明,新增推送回调与数据读写控制代理说明
2026.03.31 v1.0.0 新增看板卡片类SDK使用文档,补充 IHomeConfigurationCallbackIPanelPermissionStrategy 新接入方式

一、概述

本文介绍如何在完成集成后,参考宿主工程中的 MainActivityinitHome() 以及宿主回调与策略实现,接入看板卡片类SDK提供的页面、跳转、资源扩展与 Aqara Spec 数据通知能力。

二、前提条件

  1. 确认完成准备工作
  2. 确认完成环境搭建
  3. 确认完成看板卡片类SDK集成

三、使用

3.1 跳转到看板卡片页面

宿主入口页通常需要先判断当前设备形态,再完成 Home 模块初始化,最后加载家庭首页 HomeMainFragment

class MainActivity : BaseActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // 1. 设置手机 / 平板形态
        LumiRouterManager.instance.isTablet =
            resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE

        // 2. 初始化家庭配置能力
        initHome()

        // 3. 加载家庭首页
        startHome()
    }

    open fun startHome() {
        loadRootFragment(R.id.fl_container, HomeMainFragment())
    }
}

关键参数说明

字段 类型 描述 来源
context Activity 宿主入口页 宿主 App
HomeMainFragment Fragment 家庭首页容器 SDK提供
R.id.fl_container Int 页面容器 ID 宿主布局需预留

若需跳转到其他页面,例如服务广场、卡片列表等,可参考宿主中使用 ARouter.build(...).withString(PATH_KEY, ...).navigation() 的写法,替换为目标页面路径。

3.2 看板跳转回调

3.2.1 回调说明

看板中的卡片点击、页面跳转、离线处理、Web 打开等能力,建议统一通过 IHomeConfigurationCallback 对外提供,由宿主实现具体业务逻辑。

当前推荐方式是:

  1. 宿主实现一个回调类,例如 HomeCallBack
  2. 该类实现 IHomeConfigurationCallback
  3. 通过 ARouter 暴露给看板模块使用

IHomeConfigurationCallback 是看板模块对宿主暴露的统一跳转接口。看板首页中的卡片点击、页面跳转、离线处理、Web 打开、主题切换等行为,最终都会通过这个接口回调给宿主实现。

3.2.2 IHomeConfigurationCallback 接口说明

接口定义的核心特点如下:

  1. 继承自 IProvider,通过 ARouter 服务发现使用
  2. 多数实体参数使用 Any 透传,宿主需要按约定强转为真实类型
  3. 看板模块通过统一路由层调用该接口,不直接依赖宿主业务页面

当前常用方法与参数约定如下:

方法 参数说明 约定实际类型或用途
gotoDeviceHomePage(context, endPointEx) 设备页跳转 endPointEx 实际类型为 EndPointEx
gotoSceneHomePage(context, entity) 场景页跳转 entity 实际类型为 PanelBoardEntity
gotoAutomationHomePage(context, entity) 自动化页跳转 entity 实际类型为 PanelBoardEntity
gotoOfflinePage(context, endPointEx, showDialog) 离线诊断或离线页处理 endPointEx 实际类型为 EndPointExshowDialog 控制是否弹窗
gotoEnergyPage(context, entity) 能耗页跳转 entity 实际类型为 PanelBoardEntity
gotoHomeLocationPage(context, entity) 家庭位置页跳转 entity 实际类型为 WeatherEntity
gotoWebPage(context, url, title, isFullScreen) Web 页面跳转 使用 URL、标题和全屏标记
onChangeTheme() 主题切换回调 宿主收到后执行主题联动处理
gotoLANLinkPage(context, did, model) 局域网链路页跳转 依赖设备 didmodel
gotoLANSettingPage(context) 局域网设置页跳转 无额外业务实体
gotoVideoEventPage(context, homeId) 视频事件页跳转 使用 homeId 标识家庭
gotoServiceSquareDescPage(context, key) 服务广场详情页跳转 使用 key 标识目标内容
gotoMinePage(context) 我的页面跳转 打开个人中心相关页面

补充说明:

  1. 看板模块会根据卡片类型决定调用哪个接口方法
  2. 例如设备卡片会走 gotoDeviceHomePage(...),场景卡片会走 gotoSceneHomePage(...)
  3. 宿主实现时,需要正确识别 Any 参数的真实类型,否则无法拿到看板透传的业务数据

3.2.3 接入建议

  1. 梳理宿主现有页面,确认设备详情、家庭管理、场景、自动化和 Web 容器等页面路径及参数
  2. IHomeConfigurationCallback 的实现类中逐个补齐跳转逻辑,改成调用 ARouter 或宿主自有路由
  3. 若当前项目只做看板展示,可先实现最基础的设备页、场景页和 Web 页跳转,其他接口保留占位处理

3.3 IALinkCallBack 接口说明

3.3.1 接口职责

看板卡片类SDK通过 IALinkCallBack 与宿主的设备链路层对接,用于承接 Aqara Spec 相关的数据通知与控制能力。宿主通常需要在该接口中实现以下几类方法:

  1. 推送回调方法:接收设备 trait 的实时变更通知
  2. 数据读取代理方法:按设备、功能或 trait 读取当前值
  3. trait write 方法:用于修改设备 trait 属性值
  4. 命令下发方法:用于执行独立于 trait write 的设备命令

3.3.2 重点方法说明

方法或能力 用途 说明
onTraitPush(...) 推送回调 用于接收 Aqara Spec 的实时数据通知。当设备 trait 值变化时,宿主可在该回调中解析设备标识、trait 标识与最新值,并联动首页卡片刷新、缓存更新或业务通知分发。
数据读取代理方法 数据查询 用于看板模块主动获取设备当前状态,常见于首页首屏渲染、页面回前台刷新、卡片主动拉取最新值等场景。宿主可复用已有设备中心或本地缓存能力,返回最新 trait 数据。
trait write 方法 属性修改 用于修改设备某个 trait 的当前值,适用于开关切换、亮度调整、模式设置、温度设定等可直接映射到 trait 的属性修改场景。宿主收到请求后,应按 Aqara Spec 的 trait 写入方式执行。
命令下发方法 命令控制 用于执行与 trait write 不同的设备命令,例如触发一次性动作、发起某类执行指令或调用设备命令能力。该类方法属于命令下发链路,不应与 trait 属性修改混用。

3.3.3 接入建议

  1. 宿主需确保 IALinkCallBack 已完成注册,并由统一链路层正常回调
  2. onTraitPush(...) 建议作为实时更新入口,优先用于处理设备上报和被动刷新
  3. 数据读取代理方法建议优先复用宿主现有设备缓存、设备中心或查询接口,减少重复实现
  4. trait write 方法建议统一收口到宿主已有写入链路,便于做权限校验、节流、日志和失败重试
  5. 命令下发方法建议走独立的命令控制链路,实现上与 trait write 分开处理,避免接口语义混淆
  6. 若 trait 变更频率较高,建议增加去重、节流或按设备维度合并刷新,减少 UI 抖动与重复渲染

3.3.4 使用说明

  1. IALinkCallBack 是看板模块接入 Aqara Spec 数据通知与控制能力的核心接口
  2. 推送回调、数据读取代理、trait write、命令下发建议由宿主统一规划,但实现上应区分不同链路
  3. 其中 trait write 用于属性修改,命令下发用于执行独立设备命令,两者不是同一种控制方式
  4. 若宿主未正确实现该接口,可能出现卡片不刷新、首屏状态不准确、控制行为异常或状态不同步等问题

3.4 看板功能开关

3.4.1 IPanelPermissionStrategy 说明

看板能力是否展示、是否允许点击、是否允许编辑等,建议统一通过 IPanelPermissionStrategy 控制。

该接口用于控制家庭配置页面中哪些功能可用或可见,宿主可在初始化时注入自己的策略实现。

LMHomeManager.getInstance().setPanelPermissionStrategy(object : IPanelPermissionStrategy {
    override fun supportVoice() = false
    override fun supportAddDeviceSceneAutomation() = true
    override fun supportCardClick() = false
    override fun supportEditCard() = true
    override fun supportSwitchHome() = true
    override fun supportStatistics() = true
    override fun supportThemePanel() = false
    override fun supportLAN() = true
    override fun supportCardType() = getSupportCardType()
})

3.4.2 常用策略项说明

方法 返回值示例 含义
supportVoice() false 是否展示语音能力
supportAddDeviceSceneAutomation() true 是否允许新增设备、场景、自动化
supportCardClick() false 卡片是否允许点击跳转
supportEditCard() true 是否允许编辑卡片
supportSwitchHome() true 是否允许切换家庭
supportStatistics() true 是否展示统计能力
supportThemePanel() false 是否展示主题面板
supportLAN() true 是否展示局域网相关内容
supportCardType() getSupportCardType() 使用默认支持卡片类型或自定义卡片白名单

3.4.3 使用建议

如果只面向看板项目内容,最值得优先确认的是以下几个开关:

  1. supportCardClick():决定首页卡片是否可进入详情或执行跳转
  2. supportEditCard():决定用户能否编辑卡片
  3. supportSwitchHome():决定是否允许跨家庭切换
  4. supportCardType():决定看板允许展示哪些卡片类型

如果你的目标是“只展示不跳转”,可以将 supportCardClick() 设为 false,并保留编辑、切换家庭等按需开放。

3.5 资源扩展

3.5.1 本地资源扩展(可选)

若需要覆盖默认皮肤、图片或文案,可参考 Demo 中的 resourcesassets 目录放置自定义内容,并通过 ThemeStyle.getInstance().getBaseThemePack()ResourcesWrapper 等扩展点进行注入。

3.5.2 远程资源(可选)

看板卡片类SDK支持通过远程配置下发卡片皮肤、文案等内容。当前版本默认由内部配置中心维护,如需对外开通,请联系商务支持。

以上示例基于宿主工程中的 Demo 结构,业务接入时可按需裁剪,保持 onCreate -> initHome -> startHome 的调用链,即可快速落地家庭首页与核心卡片能力。

lumi LogoCopyright © 2023 深圳绿米联创科技有限公司 all right reserved,powered by Gitbook文档修改时间: 2026-04-09 18:11:17

results matching ""

    No results matching ""