Android 適用的 Google Home API 提供統一的 API 介面,可讓開發人員與使用者住家中的實體狀態互動。這些實體可以描述與使用者住家和房間相關聯的裝置和非裝置資訊。
Home API 定義使用者可互動的下列實體:
- 住家結構體代表包含房間和裝置的住家。
- 房間是結構的一部分,內含裝置。
- 裝置會實作包含屬性的特徵、符合類型、發出事件,以及回應指令。
- 自動化動作是結構體的一部分,會使用住家相關中繼資料和裝置,自動執行住家中的工作。
圖 1 說明這個架構:
Home API 裝置類型可能由Matter (智慧住宅開放標準) 支援,也可能是 Google Home 生態系統中的 Cloud-to-cloud 裝置。部分裝置類型可能會同時採用這兩項技術的功能。詳情請參閱「Android 支援的裝置類型」。
在 Matter 中,裝置功能會依叢集分組,並以 Matter 標準特徵的形式呈現於 Home API 中。Home API 支援目前 Matter 規格中定義的標準 Matter 叢集。
在 Google Home 生態系統中,裝置功能會依智慧住宅特徵分組,這些特徵在 Home API 中會以 Google 智慧住宅特徵表示。Home API 支援 Cloud-to-cloud 計畫中定義的一組智慧住宅特徵。
此外,您也可以使用其他特徵,例如製造商專屬叢集和平台特徵。詳情請參閱「Android 上的資料模型」。
語言
Android 適用的 Home API 是以 Kotlin 編寫而成,並提供慣用的 Kotlin 介面,可使用 Flow 管理狀態和訂閱項目。相較於標準的訂閱 API,這項功能有許多優點。
如果您還不熟悉協同程式、流程和 Jetpack Compose,建議先參閱 Kotlin 說明文件:
- 使用 Kotlin 開發 Android 應用程式
- 學習「Kotlin for Android」
- Android 上的 Kotlin 協同程式。以下程式碼研究室可能對您有幫助:
- Android 上的 Kotlin 資料流,更具體來說是 StateFlow。
- 狀態和 Jetpack Compose,特別是
collectAsStateWithLifecycle()
函式。這個函式會根據顯示該狀態的 UI 是否實際位於前景,自動管理流程的訂閱和取消訂閱作業。 - 如果您使用 Automation API,建議閱讀 Kotlin 型別安全建構工具,瞭解 Automation DSL 的運作方式。
實體 ID
每個 Home API 實體都有 ID,代表其主要 ID。這個 ID 是專屬的穩定 ID,實體存在期間不會變更。這個 ID 可用於快取物件或檢查是否相等,因為實體的中繼資料可能會變更。
如要瞭解哪些實體有 ID,請參閱 HasId
介面。
術語對應
Home API 中的實體會對應至 Matter 和 Cloud-to-cloud 概念,如下所示:
Home API | Matter | Cloud-to-cloud |
---|---|---|
特徵 | 叢集 | 特徵 |
屬性 | 屬性 | 屬性、狀態 |
指令 | 指令 | 指令 |
活動 | 活動 | 後續回覆、通知 |