Interfejsy API Google Home na Androida zapewniają ujednoliconą powierzchnię interfejsu API, aby umożliwić deweloperom interakcję ze stanem elementów w domu użytkownika. Te encje mogą opisywać urządzenia i informacje inne niż urządzenia powiązane ze strukturą i pokojami użytkownika.
Interfejsy API Home definiują te elementy, z którymi użytkownik może wchodzić w interakcje:
- Struktury to domy z pomieszczeniami i urządzeniami.
- Sale są częścią struktury i zawierają urządzenia.
- Urządzenia implementują cechy zawierające atrybuty, są zgodne z typami, emitują zdarzenia i reagują na polecenia.
- Automatyzacje są częścią struktury i korzystają z metadanych domu oraz urządzeń, aby automatyzować zadania w domu.
Rysunek 1 przedstawia tę architekturę:
Typy urządzeń domowych z interfejsem API mogą być obsługiwane przez Matter, czyli otwarty standard dla inteligentnych domów, lub mogą należeć do ekosystemu Google Home (Cloud-to-cloud). Niektóre typy urządzeń mogą zawierać funkcje z obu tych systemów. Więcej informacji znajdziesz w artykule Obsługiwane typy urządzeń z Androidem.
W Matter funkcje urządzenia są grupowane według klastrów, które w interfejsach Home API są reprezentowane jako Matterstandardowe cechy. Interfejsy API Home obsługują standardowy zestaw klastrów Matter zgodnie ze specyfikacją Matter.
W ekosystemie Google Home funkcje urządzeń są grupowane według atrybutów inteligentnego domu, które w interfejsach API Google Home są reprezentowane jako atrybuty inteligentnego domu Google. Interfejsy API Home obsługują zestaw atrybutów inteligentnego domu zdefiniowanych w programie Cloud-to-cloud.
Dostępne są też inne cechy, takie jak klastry dla poszczególnych producentów i cechy platformy. Więcej informacji znajdziesz w artykule Model danych na Androida.
Język
Interfejsy API Home na Androida są napisane w języku Kotlin i zawierają idiomatyczny interfejs Kotlina, który do zarządzania stanem i subskrypcją korzysta z Flow. Daje to kilka korzyści w porównaniu ze standardowym interfejsem API subskrypcji.
Jeśli jeszcze tego nie zrobiłeś/nie zrobiłaś, zapoznaj się z dokumentacją Kotlina dotyczącą coroutines, flow i Jetpack Compose:
- Tworzenie aplikacji na Androida w Kotlinie
- Nauka języka Kotlin na potrzeby Androida
- Kotlin Coroutines na Androidzie. Te laboratoria programistyczne mogą być przydatne:
- Kotlin Flows na Androidzie, a w szczególności StateFlow.
- State i Jetpack Compose, w szczególności funkcja
collectAsStateWithLifecycle()
. Ta funkcja automatycznie zarządza subskrypcją i anulowaniem subskrypcji przepływów na podstawie tego, czy interfejs użytkownika pokazujący ten stan jest rzeczywiście na pierwszym planie. - Jeśli pracujesz z interfejsem Automation API, warto zapoznać się z artykułem Kotlin: bezpieczne konstruktory typu, aby lepiej zrozumieć, jak działa Automation DSL.
Identyfikatory jednostek
Każda entność w interfejsach API Home ma identyfikator, który stanowi jej podstawowy identyfikator. Ten identyfikator jest unikalny i niezmienny przez cały czas istnienia danego elementu. Ten identyfikator może służyć do umieszczania obiektów w pamięci podręcznej lub sprawdzania równości, ponieważ metadane danego elementu mogą się zmieniać.
Aby dowiedzieć się, które jednostki mają identyfikator, zajrzyj do interfejsu HasId
.
Mapowanie terminologii
Elementy w interfejsach API Home są mapowane na pojęcia Matter i Cloud-to-cloud w ten sposób:
Interfejsy Home API | Matter | Cloud-to-cloud |
---|---|---|
Cecha | Klaster | Cecha |
Atrybut | Atrybut | Atrybut, stan |
Polecenie | Polecenie | Polecenie |
Zdarzenie | Zdarzenie | Odpowiedź na zapytanie, Powiadomienie |