在 Wear OS 上傳送資料並同步處理

Wear OS by Google 可讓手錶透過多種方式傳送及同步處理資料。建議您直接從網路傳送及同步處理資料,不要使用 Wearable Data Layer API。

直接從網路傳送及同步處理資料

建構 Wear OS 應用程式,以便直接與網路通訊。您可以採用和行動開發相同的 API,但請留意 Wear-OS 的特定差異。

透過 Wearable Data Layer API 傳送及同步處理資料

Wearable Data Layer API 是 Google Play 服務的一部分,可為應用程式提供選用的通訊管道。

這個 API 僅適用於 Wear OS 手錶和配對的 Android 裝置。在有網際網路連線的情況下,與 iOS 手機配對的 Wear OS 手錶可以查詢其他雲端式 API。

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

此外,您必須使用相同的金鑰簽署智慧手錶和手機應用程式。

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

  dependencies {
    ...
    implementation 'com.google.android.gms:play-services-wearable:18.0.0'
  }
  

我們建議穿戴式應用程式直接透過網路或已連結的手機傳送及同步處理資料。不過,如果您想以 RPC 類型格式在裝置之間直接通訊,或是無法直接連上網路取得資訊,可透過下列方式使用 Wearable Data Layer API。

宣傳及查詢遠端功能
CapabilityClient 可讓您知道,Wear OS 網路中哪些節點支援哪些自訂應用程式功能。節點代表連線至網路的行動裝置和穿戴式裝置。「功能」是指應用程式定義的功能。
舉例來說,某個 Android 行動應用程式可宣傳其支援遠端影片播放。只要安裝該應用程式的穿戴式版本,就能使用 CapabilityClient 檢查是否已安裝行動版應用程式,並支援該功能。如果是肯定答案,穿戴式應用程式可透過訊息顯示播放/暫停按鈕,讓您控制另一部裝置上的影片。
同樣的,也能讓支援的穿戴式應用程式宣稱功能,反向操作上述程序。
傳送訊息
MessageClient 可以傳送訊息,且適用於遠端程序呼叫 (RPC),例如透過穿戴式裝置控制手持裝置的媒體播放器,或在穿戴式裝置啟動手持裝置意圖執行的動作。訊息也適合用於單向要求,或要求/回應通訊模型。
如果手持裝置和穿戴式裝置已連線,系統會將訊息排入傳送佇列,並傳回顯示為成功的結果代碼。如果裝置未連線,系統會傳回錯誤。但傳回顯示成功的結果代碼,其實並不表示訊息傳送成功,因為裝置在收到結果代碼後,也可能中斷連線。
轉移資料
ChannelClient 可以將手持裝置的資料轉移到穿戴式裝置。您可以透過 ChannelClient 執行以下操作:
  • 使用附加在 DataItem 物件的 Asset 物件時,在未提供自動同步機制、網路也無法使用的狀況下,於多個已連接的裝置間轉移資料檔案。ChannelClient DataClient 更節省磁碟空間,後者會在與連結的裝置同步處理前,在本機裝置建立資產副本。
  • 使用 MessageClient 傳送因太大而無法傳送的檔案。
  • 轉移串流資料,例如來自麥克風的語音資料。
同步處理資料
DataClient 會公開 API,讓元件能夠讀取或寫入 DataItemAsset
DataItem 會同步到 Wear OS 網路中的所有裝置。您可以在不連線至任何節點的情況下設定資料項目。節點連線後,系統會同步處理這些資料項目。
資料項目僅屬於建立這些項目的應用程式,且僅供該應用程式在其他節點上存取。通常這應是較小型的項目;如果是轉移較大型、較具持續性的資料物件 (例如圖片),則會使用 Assets
Wear OS 支援將多部穿戴式裝置連接至同一部手持裝置。舉例來說,如果使用者在手持裝置上儲存了一則記事,使用者的所有 Wear OS 裝置都會自動顯示這則記事。Google 伺服器會在裝置網路中代管雲端節點,便於在裝置間同步處理資料。系統會將資料與直接連線的裝置、雲端節點,以及透過 Wi-Fi 連線至雲端節點的穿戴式裝置保持同步。
圖 1. 手持裝置和穿戴式裝置的節點網路範例。
監聽重要的資料層事件 (適用於服務)
擴充 WearableListenerService 可讓您監聽服務中的重要資料層事件。系統會管理 WearableListenerService 的生命週期,在需要傳送資料項目或訊息時繫結服務,以及在不需要執行任何操作時解除服務繫結。
監聽重要資料層事件 (適用於前景活動)
在活動中實作 OnDataChangedListener 可讓您在活動於前景運作時監聽重要的資料層事件。使用這個 API 取代 WearableListenerService,可以只在使用者頻繁操作應用程式時監聽變更。

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

用戶端比較

下表列出各用戶端的不同要求和用途。

資料用戶端 訊息用戶端 管道用戶端
資料大小超過 100 kb
需要網路連線,例如將資料儲存到雲端 使用藍牙 使用藍牙
可將訊息傳送至目前未連結的節點
可以從某部裝置傳送到另一部裝置,例如從穿戴式裝置傳送到行動裝置 否,從雲端至所有節點 是,適用於單向要求和雙向要求
支援向所有裝置擴散傳遞資料
可靠性 是,在建立藍牙連線後

重要事項:您的手機和 Wear OS APK 簽章與簽章配置必須相同,Wearable Data Layer API 才能成功在裝置間通訊。這包括使用 v1 和/或 v2 簽章。請確保在 build.gradle 中或使用 Generate Signed APK 精靈時,已正確設定簽章配置。