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 上的資料模型」。
生態系統
Google Home 生態系統提供簡化的基礎架構,方便您建構、管理、保護及整合智慧住宅體驗。圖 2 顯示所有元件如何協同運作。
這個生態系統包含 Google 自動化引擎,可儲存及執行自動化動作,方便你自動執行住家中的工作和裝置設定。
Home API 會使用 OAuth 2.0 授權存取結構中的裝置。使用者可以透過 OAuth 授權應用程式或服務,不必提供登入憑證。
Google Home Developer Console 可用於管理 Google Home API 專案的所有階段,從品牌驗證、開發、測試和認證,到最終發布,都能一手掌握。這項服務可簡化開發程序,同時透過 Google Home 生態系統提供強大的工具和發布功能。
語言
Android 適用的 Home API 是以 Kotlin 編寫而成,提供慣用的 Kotlin 介面,可使用 Flow 管理狀態和訂閱項目。相較於標準的訂閱 API,這項功能有許多優點。
如果您還不熟悉,建議先參閱 Kotlin 說明文件,瞭解協同程式、流程和 Jetpack Compose:
- 使用 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 |
|---|---|---|
| 特徵 | 叢集 | 特徵 |
| 屬性 | 屬性 | 屬性、狀態 |
| 指令 | 指令 | 指令 |
| 事件 | 事件 | 後續回覆、通知 |