Data Layer API 總覽

雲端節點由 Google 自有伺服器控管
圖 1. 手持裝置和 Wear OS 裝置的節點網路範例。

Wearable Data Layer API 是 Google Play 服務的一部分,可提供穿戴式裝置 (例如智慧手錶) 與連線的手持式裝置 (通常是智慧型手機) 之間的通訊管道。這項功能可同步處理及轉移裝置之間的資料。

注意:這個 API 僅適用於 Wear OS 手錶和配對的 Android 裝置。Wear OS 手錶與 iOS 手機配對時,在有網際網路連線的情況下,應用程式可以查詢其他雲端式 API。如要進一步瞭解這些其他 API,請參閱「在 Wear OS 上存取網路和進行同步處理」。

注意:由於資料層 API 是專為手持裝置與穿戴式裝置之間的通訊而設計,因此只有這些 API 可用於設定這類裝置間的通訊。舉例來說,請勿嘗試開啟低階通訊端來建立通訊管道。

常見用途

如果互動僅限於手錶和手機之間,請使用 Data Layer API。例如:

  • 遙控器:手錶可做為手機的遙控器 (例如控制手機上執行的音樂播放器、投影片放映、相機快門)。
  • 手持裝置應用程式啟動:「在手機上開啟」按鈕功能。
  • 驗證橋接:在初始設定期間,將工作階段權杖從手機傳送至手錶。

在許多常見情境中,您應該改用現有的雲端基礎架構,例如:

  • 儲存資料:訓練、附註。
  • 擷取內容:載入過往的訓練清單、下載音樂、擷取天氣資訊。
  • 同步狀態:如果使用者在網頁上變更個人資料相片,手錶會透過雲端更新,而不是查詢手機。

在這些情況下,請使用您現有的端點和基礎架構,而非 Data Layer API。

通訊方式

資料會透過下列其中一種方式轉移:

  1. 直接:Wear OS 裝置與其他裝置建立藍牙連線時。
  2. 透過 LTE 或 Wi-Fi 等可用網路,並使用 Google 伺服器上的網路節點做為中介。

視裝置可用的連線方式而定,所有資料層用戶端都可以透過藍牙或雲端交換資料。假設透過資料層傳輸的資料可能會在某個時間點使用 Google 自有伺服器。

藍牙

當裝置透過藍牙連線時,資料層會使用這個連線方式。 裝置之間會有一個採用標準藍牙加密機制的加密管道,由 Google Play 服務管理。

雲端

無法使用藍牙時,資料會自動透過 Google Cloud 傳輸。所有透過 Google Cloud 傳輸的資料都會經過端對端加密處理。

通訊安全

Google Play 服務會強制執行下列限制,確保 Wear OS 裝置上安裝的應用程式與附近手持式裝置上安裝的相同應用程式之間的通訊安全無虞:

  • 兩部裝置的套件名稱必須一致。
  • 兩部裝置的套件簽名必須一致。

無論連線類型為何,其他應用程式都無法存取資料。

設定

Wearable Data Layer API 具有下列依附元件:

在 Wear 模組的 build.gradle 檔案中納入下列依附元件:

dependencies {
    ...
    implementation("com.google.android.gms:play-services-wearable:19.0.0")
}

協助完成初始配對程序

Horologist 在平台 API 的基礎上提供多個輔助程式庫。其中包含資料層程式庫,可協助在行動裝置和 Wear OS 裝置之間建立連線。此外,這項擴充功能還提供便利的 API,可執行下列動作:

  • 在其他裝置上安裝應用程式。
  • 在其他裝置上啟動應用程式。
  • 在其他裝置上啟動特定活動。
  • 啟動隨附應用程式。

存取資料層

如要呼叫 Data Layer API,請使用 Wearable 類別取得各種用戶端類別的例項,例如 DataClientMessageClient

詳情請參閱 DataLayer 範例

使用最基本的用戶端

如要建立用戶端,請參閱下列程式碼範例:

val dataClient = Wearable.getDataClient(this)

val available = try {
    GoogleApiAvailability.getInstance()
        .checkApiAvailability(client)
        .await()
    true
} catch (e: AvailabilityException) {
    // API is not available in this device.
    false
}

結構定義可以是任何有效的 Android 結構定義。如果您在 Activity 的範圍內使用 API,請使用 Wearable 類別的 getDataClient() 方法。這樣一來,特定互動能夠以對話方塊顯示 (而非通知),例如要求使用者更新自己的 Google Play 服務版本時。

根據預設,對監聽器的回呼是在應用程式主要 UI 執行緒進行。如要在不同執行緒進行回呼,請使用 WearableOptions 物件指定自訂 Looper

詳情請參閱 WearableOptions.Builder 參考資料。

視需要重新建立用戶端執行個體

DataClientMessageClient 等 Wearable API 用戶端的建立成本較低。因此,請不要保留用戶端,而是根據應用程式適用的樣式,在需要時重新建立。

用戶端狀態 (例如已註冊的事件監聽器組合) 會在所有用戶端共用,並於應用程式執行期間更新 Google Play 服務時保留。