Android 上的简化 trait

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

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

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

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

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

简化特征和 Discovery API

Discovery API 会报告简化特征及其底层 标准特征,前提是这两个特征都在 FactoryRegistry中注册。例如,如果结构中存在 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) }