Android 上的简化 trait

为了便于使用,我们提供了部分 trait 的简化版本,以便在 Android 上与 Automation API 搭配使用。

简化 trait 可替代标准 Home API trait,类似于 how the facade pattern works. 简化 trait 提供的命令可让某些设备类型更轻松地完成常见任务。简化 trait 是 Home API trait,与其他 Home API trait 一样,它们适用于 MatterCloud-to-cloud 设备。

简化 trait 提供了一组替代属性和命令,这些属性和命令比相应标准 trait 的属性和命令更具设备专用性。 例如,标准 LevelControl trait 是一种通用 trait,可用于任何具有可在一定数值范围内连续变化的 设置的设备。 Brightness 是一种 简化 trait,可替代 LevelControl,并且仅提供 DimmableLight 设备所需的命令和属性。Brightness 具有一个 moveToBrightness 命令,该命令接受单个 brightnessPercent 实参,而 LevelControl 具有多个 move 命令,其中大多数命令至少有四个形参,以适应 更广泛的用例。

下表显示了每个简化 trait 及其底层标准 trait。每个 trait 名称都链接到相应的 API 文档:

表:简化 trait
简化 trait 标准 trait
SimplifiedThermostat Thermostat
Brightness LevelControl
SimplifiedOnOff OnOff
Volume LevelControl
OnOff

简化 trait 和 Discovery API

Discovery API 会报告简化 trait 及其底层 标准 trait,前提是这两个 trait 都已在 FactoryRegistry中注册。例如,如果结构中存在 DimmableLight 设备,并且开发者在 FactoryRegistry 中注册了 LevelControlBrightness trait,则 Discovery API 会指明这两个 trait 的存在。开发者可以选择在自动化中使用任一 trait。

如需了解详情,请参阅 Android 上的 Discovery API

检索支持简化 trait 的设备

使用 Device API 获取结构中支持简化 trait(例如 SimplifiedThermostat)的设备时,您无法使用 has(trait) 方法。请改用 has(deviceType) 方法:

val thermostat = home.devices().list().first { device -> device.has(ThermostatDevice) }