ลักษณะที่เรียบง่ายใน 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) }