ลักษณะที่เรียบง่ายใน Android

เราได้สร้างเวอร์ชันที่ใช้งานง่ายของลักษณะบางอย่างเพื่อใช้กับ Automation API ใน Android

ลักษณะที่ใช้งานง่ายจะแทนลักษณะมาตรฐานของ Home API ซึ่งคล้ายกับวิธีที่ รูปแบบ Facade ทำงาน ลักษณะที่ใช้งานง่ายมีคำสั่งที่ช่วยให้งานทั่วไปง่ายขึ้นสำหรับอุปกรณ์บางประเภท ลักษณะที่ใช้งานง่ายเป็นลักษณะของ Home API และทำงานได้กับทั้ง Matter และ Cloud-to-cloud เช่นเดียวกับลักษณะอื่นๆ ของ Home API

ลักษณะที่ใช้งานง่ายมีชุดแอตทริบิวต์และคำสั่งทางเลือกที่เฉพาะเจาะจงกับอุปกรณ์มากกว่าลักษณะมาตรฐานที่เกี่ยวข้อง เช่น ลักษณะมาตรฐาน LevelControl เป็นลักษณะทั่วไปที่ใช้ได้กับอุปกรณ์ทุกเครื่องที่มีการ ตั้งค่าที่เปลี่ยนแปลงอย่างต่อเนื่องในช่วงค่าตัวเลข Brightness เป็นลักษณะที่ใช้งานง่ายซึ่งแทน LevelControl และมีเพียงคำสั่งและแอตทริบิวต์ที่อุปกรณ์ DimmableLight ต้องการ Brightness มีคำสั่ง moveToBrightness ที่ใช้อาร์กิวเมนต์ brightnessPercent รายการเดียว ในขณะที่ LevelControl มีคำสั่งmove หลายรายการ ซึ่งส่วนใหญ่มีพารามิเตอร์อย่างน้อย 4 รายการเพื่อรองรับกรณีการใช้งานที่หลากหลายมากขึ้น

ตารางต่อไปนี้แสดงลักษณะที่ใช้งานง่ายแต่ละรายการและลักษณะมาตรฐานพื้นฐาน ชื่อลักษณะแต่ละรายการจะลิงก์ไปยังเอกสารประกอบเกี่ยวกับ API ที่เกี่ยวข้อง

ตาราง: ลักษณะที่ใช้งานง่าย
ลักษณะที่ใช้งานง่าย ลักษณะมาตรฐาน
SimplifiedThermostat Thermostat
Brightness LevelControl
SimplifiedOnOff OnOff
Volume LevelControl
OnOff

ลักษณะที่ใช้งานง่ายและ Discovery API

Discovery API จะรายงานลักษณะที่ใช้งานง่ายและลักษณะมาตรฐานพื้นฐาน ตราบใดที่ได้ลงทะเบียนลักษณะทั้ง 2 รายการไว้ใน FactoryRegistry เช่น หากมีอุปกรณ์ DimmableLight อยู่ในโครงสร้าง และนักพัฒนาแอป ได้ลงทะเบียนทั้งลักษณะ LevelControl และ Brightness ไว้ใน FactoryRegistry Discovery API จะระบุว่ามีลักษณะทั้ง 2 รายการ นักพัฒนาแอปสามารถเลือกใช้ลักษณะใดก็ได้ในการทำงานอัตโนมัติ

ดูข้อมูลเพิ่มเติมได้ที่ Discovery API ใน Android

ดึงข้อมูลอุปกรณ์ที่รองรับลักษณะที่ใช้งานง่าย

เมื่อใช้ Device API เพื่อรับอุปกรณ์ในโครงสร้างที่รองรับลักษณะที่ใช้งานง่าย เช่น SimplifiedThermostat คุณจะใช้วิธี has(trait) ไม่ได้ แต่ให้ใช้วิธี has(deviceType) แทน

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