Android 上的简化 trait

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

简化版特征可替代标准 Home API 特征,类似于外观模式的工作方式。简化版特征提供的命令可让某些设备类型更轻松地完成常见任务。简化版特征是 Home API 特征,与其他 Home API 特征一样,它们适用于 MatterCloud-to-cloud 设备。

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

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

表格:简化的特征
简化版特征 标准特征
SimplifiedThermostat Thermostat
Brightness LevelControl
SimplifiedOnOff OnOff
Volume LevelControl
OnOff

简化版特征和 Discovery API

只要简化特征及其底层标准特征均已在 FactoryRegistry 中注册,Discovery API 就会报告这两个特征。例如,如果结构中存在 DimmableLight 设备,并且开发者在 FactoryRegistry 中注册了 LevelControlBrightness 特征,则 Discovery API 会指示这两个特征均存在。开发者可以选择在自动化中使用任一特征。

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

检索支持简化版特征的设备

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

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