适用于 Android 的 Google Home API 提供了一个统一的 API 界面,使开发者能够与用户住宅中实体的状态进行交互。这些实体可以描述与用户结构和房间关联的设备和非设备信息。
Home API 定义了用户可以与之互动的以下实体:
- 结构表示包含房间和住宅的住宅。
- 房间是结构的一部分,包含设备。
- 设备实现包含属性的特征、符合类型、发出事件并响应命令。
- 自动化操作是结构的一部分,使用住宅元数据和设备来自动执行住宅中的任务。
图 1 展示了此架构:
Home API 设备类型可能由智能家居开放标准 Matter 提供支持,也可能是 Google Home 生态系统中的 Cloud-to-cloud 设备。某些设备类型可能同时包含这两者的功能。如需了解详情,请参阅 Android 上支持的设备类型。
在 Matter 中,设备功能按集群分组,这些集群在 Home API 中表示为 Matter 标准特征。Home API 支持当前 Matter 规范中定义的标准 Matter 集群。
在 Google Home 生态系统中,设备功能按智能家居特征分组,这些特征在 Home API 中表示为 Google 智能家居特征。Home API 支持 Cloud-to-cloud 计划中定义的一组智能家居特征。
此外,还提供其他特征,例如特定于制造商的集群和平台特征。如需了解详情,请参阅 Android 上的数据模型。
语言
Android 的 Home API 采用 Kotlin 编写,并提供使用 Flow 管理状态和订阅的惯用 Kotlin 接口。与标准订阅 API 相比,这具有多项优势。
如果您还不熟悉协程、Flow 和 Jetpack Compose,建议您先熟悉相关 Kotlin 文档:
- 使用 Kotlin 开发 Android 应用
- 学习使用 Kotlin 开发 Android 应用
- Android 上的 Kotlin 协程。以下特定 Codelab 可能会很有用:
- Android 上的 Kotlin 数据流,更具体地说,是 StateFlow。
- 状态和 Jetpack Compose,尤其是
collectAsStateWithLifecycle()
函数。此函数可根据显示相应状态的界面是否实际位于前台,自动管理对相应 flow 的订阅和取消订阅。 - 如果您使用的是 Automation API,那么阅读有关 Kotlin 类型安全构建器的内容有助于了解 Automation DSL 的运作方式。
实体标识符
Home API 中的每个实体都有一个 ID,用于表示其主要标识符。此 ID 是唯一且稳定的标识符,在实体的整个生命周期内都不会发生变化。此 ID 可用于缓存对象或检查相等性,因为实体的元数据可能会发生变化。
请参阅 HasId
接口,了解哪些实体具有 ID。
术语映射
Home API 中的实体与 Matter 和 Cloud-to-cloud 概念的对应关系如下:
Home API | Matter | Cloud-to-cloud |
---|---|---|
特征 | 集群 | 特征 |
属性 | 属性 | 属性、状态 |
命令 | 命令 | 命令 |
事件 | 事件 | 后续跟进回答、通知 |