为便于使用,某些特性的简化版本可与 Android 上的 Automation API 搭配使用。
简化的 trait 代表标准的 Home API trait,其工作方式类似于外观模式。简化特征提供的命令可让某些设备类型的常见任务变得更简单。简化的 trait 是 Home API trait,与其他 Home API trait 一样,它们同时适用于 Matter 和 Cloud-to-cloud 设备。
简化版特征提供了一组替代属性和命令,与相应标准特征相比,这些属性和命令更具设备特异性。
例如,标准 LevelControl 特征是一种通用特征,可用于任何具有在一定数值范围内连续变化的设置的设备。Brightness 是一种简化的特征,代表 LevelControl,仅提供 DimmableLight 设备所需的命令和属性。Brightness 具有一个 moveToBrightness 命令,该命令接受单个 brightnessPercent 参数,而 LevelControl 具有多个 move 命令,其中大多数命令至少有四个参数,以适应更广泛的使用场景。
下表显示了每个简化特征和底层标准特征。每个特征名称都会链接到相应的 API 文档:
| 简化 trait | 标准特征 |
|---|---|
SimplifiedThermostat
|
Thermostat
|
Brightness
|
LevelControl
|
SimplifiedOnOff
|
OnOff
|
Volume
|
LevelControlOnOff
|
简化的特征和 Discovery API
只要这两种特性都在 FactoryRegistry 中注册,Discovery API 就会报告简化特性及其底层标准特性。例如,如果结构中存在 DimmableLight 设备,并且开发者在 FactoryRegistry 中注册了 LevelControl 和 Brightness 特征,则 Discovery API 会指示这两个特征的存在。开发者可以选择在自动化操作中使用任一 trait。
如需了解详情,请参阅 Android 上的 Discovery API。
检索支持简化特征的设备
使用 Device API 获取结构中支持简化特征(例如 SimplifiedThermostat)的设备时,您无法使用 has(trait) 方法。请改用 has(deviceType) 方法:
val thermostat = home.devices().list().first { device -> device.has(ThermostatDevice) }