看板卡片类SDK使用
修改历史
| 日期 | 版本号 | 修改内容 |
|---|---|---|
| 2026.04.06 | v1.0.1 | 补充 IALinkCallBack 接口方法说明,新增推送回调与数据读写控制代理说明 |
| 2026.03.31 | v1.0.0 | 新增看板卡片类SDK使用文档,补充 IHomeConfigurationCallback 与 IPanelPermissionStrategy 新接入方式 |
一、概述
本文介绍如何在完成集成后,参考宿主工程中的 MainActivity、initHome() 以及宿主回调与策略实现,接入看板卡片类SDK提供的页面、跳转、资源扩展与 Aqara Spec 数据通知能力。
二、前提条件
- 确认完成准备工作
- 确认完成环境搭建
- 确认完成看板卡片类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 对外提供,由宿主实现具体业务逻辑。
当前推荐方式是:
- 宿主实现一个回调类,例如
HomeCallBack - 该类实现
IHomeConfigurationCallback - 通过 ARouter 暴露给看板模块使用
IHomeConfigurationCallback 是看板模块对宿主暴露的统一跳转接口。看板首页中的卡片点击、页面跳转、离线处理、Web 打开、主题切换等行为,最终都会通过这个接口回调给宿主实现。
3.2.2 IHomeConfigurationCallback 接口说明
接口定义的核心特点如下:
- 继承自
IProvider,通过 ARouter 服务发现使用 - 多数实体参数使用
Any透传,宿主需要按约定强转为真实类型 - 看板模块通过统一路由层调用该接口,不直接依赖宿主业务页面
当前常用方法与参数约定如下:
| 方法 | 参数说明 | 约定实际类型或用途 |
|---|---|---|
gotoDeviceHomePage(context, endPointEx) |
设备页跳转 | endPointEx 实际类型为 EndPointEx |
gotoSceneHomePage(context, entity) |
场景页跳转 | entity 实际类型为 PanelBoardEntity |
gotoAutomationHomePage(context, entity) |
自动化页跳转 | entity 实际类型为 PanelBoardEntity |
gotoOfflinePage(context, endPointEx, showDialog) |
离线诊断或离线页处理 | endPointEx 实际类型为 EndPointEx,showDialog 控制是否弹窗 |
gotoEnergyPage(context, entity) |
能耗页跳转 | entity 实际类型为 PanelBoardEntity |
gotoHomeLocationPage(context, entity) |
家庭位置页跳转 | entity 实际类型为 WeatherEntity |
gotoWebPage(context, url, title, isFullScreen) |
Web 页面跳转 | 使用 URL、标题和全屏标记 |
onChangeTheme() |
主题切换回调 | 宿主收到后执行主题联动处理 |
gotoLANLinkPage(context, did, model) |
局域网链路页跳转 | 依赖设备 did、model |
gotoLANSettingPage(context) |
局域网设置页跳转 | 无额外业务实体 |
gotoVideoEventPage(context, homeId) |
视频事件页跳转 | 使用 homeId 标识家庭 |
gotoServiceSquareDescPage(context, key) |
服务广场详情页跳转 | 使用 key 标识目标内容 |
gotoMinePage(context) |
我的页面跳转 | 打开个人中心相关页面 |
补充说明:
- 看板模块会根据卡片类型决定调用哪个接口方法
- 例如设备卡片会走
gotoDeviceHomePage(...),场景卡片会走gotoSceneHomePage(...) - 宿主实现时,需要正确识别
Any参数的真实类型,否则无法拿到看板透传的业务数据
3.2.3 接入建议
- 梳理宿主现有页面,确认设备详情、家庭管理、场景、自动化和 Web 容器等页面路径及参数
- 在
IHomeConfigurationCallback的实现类中逐个补齐跳转逻辑,改成调用 ARouter 或宿主自有路由 - 若当前项目只做看板展示,可先实现最基础的设备页、场景页和 Web 页跳转,其他接口保留占位处理
3.3 IALinkCallBack 接口说明
3.3.1 接口职责
看板卡片类SDK通过 IALinkCallBack 与宿主的设备链路层对接,用于承接 Aqara Spec 相关的数据通知与控制能力。宿主通常需要在该接口中实现以下几类方法:
- 推送回调方法:接收设备 trait 的实时变更通知
- 数据读取代理方法:按设备、功能或 trait 读取当前值
trait write方法:用于修改设备 trait 属性值- 命令下发方法:用于执行独立于
trait write的设备命令
3.3.2 重点方法说明
| 方法或能力 | 用途 | 说明 |
|---|---|---|
onTraitPush(...) |
推送回调 | 用于接收 Aqara Spec 的实时数据通知。当设备 trait 值变化时,宿主可在该回调中解析设备标识、trait 标识与最新值,并联动首页卡片刷新、缓存更新或业务通知分发。 |
| 数据读取代理方法 | 数据查询 | 用于看板模块主动获取设备当前状态,常见于首页首屏渲染、页面回前台刷新、卡片主动拉取最新值等场景。宿主可复用已有设备中心或本地缓存能力,返回最新 trait 数据。 |
trait write 方法 |
属性修改 | 用于修改设备某个 trait 的当前值,适用于开关切换、亮度调整、模式设置、温度设定等可直接映射到 trait 的属性修改场景。宿主收到请求后,应按 Aqara Spec 的 trait 写入方式执行。 |
| 命令下发方法 | 命令控制 | 用于执行与 trait write 不同的设备命令,例如触发一次性动作、发起某类执行指令或调用设备命令能力。该类方法属于命令下发链路,不应与 trait 属性修改混用。 |
3.3.3 接入建议
- 宿主需确保
IALinkCallBack已完成注册,并由统一链路层正常回调 onTraitPush(...)建议作为实时更新入口,优先用于处理设备上报和被动刷新- 数据读取代理方法建议优先复用宿主现有设备缓存、设备中心或查询接口,减少重复实现
trait write方法建议统一收口到宿主已有写入链路,便于做权限校验、节流、日志和失败重试- 命令下发方法建议走独立的命令控制链路,实现上与
trait write分开处理,避免接口语义混淆 - 若 trait 变更频率较高,建议增加去重、节流或按设备维度合并刷新,减少 UI 抖动与重复渲染
3.3.4 使用说明
IALinkCallBack是看板模块接入 Aqara Spec 数据通知与控制能力的核心接口- 推送回调、数据读取代理、
trait write、命令下发建议由宿主统一规划,但实现上应区分不同链路 - 其中
trait write用于属性修改,命令下发用于执行独立设备命令,两者不是同一种控制方式 - 若宿主未正确实现该接口,可能出现卡片不刷新、首屏状态不准确、控制行为异常或状态不同步等问题
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 使用建议
如果只面向看板项目内容,最值得优先确认的是以下几个开关:
supportCardClick():决定首页卡片是否可进入详情或执行跳转supportEditCard():决定用户能否编辑卡片supportSwitchHome():决定是否允许跨家庭切换supportCardType():决定看板允许展示哪些卡片类型
如果你的目标是“只展示不跳转”,可以将 supportCardClick() 设为 false,并保留编辑、切换家庭等按需开放。
3.5 资源扩展
3.5.1 本地资源扩展(可选)
若需要覆盖默认皮肤、图片或文案,可参考 Demo 中的 resources、assets 目录放置自定义内容,并通过 ThemeStyle.getInstance().getBaseThemePack() 或 ResourcesWrapper 等扩展点进行注入。
3.5.2 远程资源(可选)
看板卡片类SDK支持通过远程配置下发卡片皮肤、文案等内容。当前版本默认由内部配置中心维护,如需对外开通,请联系商务支持。
以上示例基于宿主工程中的 Demo 结构,业务接入时可按需裁剪,保持 onCreate -> initHome -> startHome 的调用链,即可快速落地家庭首页与核心卡片能力。