Wearable Data Layer API 是 Google Play 服務的一部分,可提供穿戴式裝置 (例如智慧手錶) 與連線的手持式裝置 (通常是智慧型手機) 之間的通訊管道。這項功能可同步處理及轉移裝置間的資料。
注意:這個 API 僅適用於 Wear OS 手錶和配對的 Android 裝置。Wear OS 手錶與 iOS 手機配對時,在有網際網路連線的情況下,應用程式可以查詢其他雲端式 API。如要進一步瞭解這些其他 API,請參閱「在 Wear OS 上存取網路和進行同步處理」。
注意:由於資料層 API 是專為手持裝置與穿戴式裝置之間的通訊而設計,因此只有這些 API 可用於設定這類裝置間的通訊。舉例來說,請勿嘗試開啟低階通訊端來建立通訊管道。
常見用途
Data Layer API 特別適合用於健身和媒體用途。
健身應用程式
將運動資料從 Wear OS 應用程式傳送至行動應用程式健身應用程式通常需要將手錶擷取的運動資料寫入行動應用程式或 「健康資料同步」。如果使用 Data Layer API 傳輸資料,請使用訊息用戶端將運動資料從 Wear OS 應用程式傳送至行動應用程式,以便寫入「健康資料同步」。
在家運動時,將即時資料串流到行動裝置
常見的居家運動情境是將心率資料從 Wear OS 裝置串流至行動裝置,並在行動裝置螢幕上向使用者顯示最新心率資訊。如要串流傳輸這項資料,請使用管道用戶端。
媒體應用程式
如要透過手錶暫停/繼續/開始/結束動作控制手機上的媒體播放器,請使用訊息用戶端。
通訊方式
資料會透過下列其中一種方式轉移:
- 直接:在 Wear OS 裝置已與其他裝置建立藍牙連線時。
- 透過 LTE 或 Wi-Fi 等可用網路,使用 Google 伺服器上的網路節點做為中介。
視裝置可用的連線方式而定,所有資料層用戶端都可以透過藍牙或雲端交換資料。假設透過資料層傳輸的資料可能會在某個時間點使用 Google 自有伺服器。
藍牙
當裝置透過藍牙連線時,資料層會使用這個連線方式。 裝置之間會有一個採用標準藍牙加密機制的加密管道,由 Google Play 服務管理。
雲端
無法使用藍牙時,資料會自動透過 Google Cloud 傳輸。所有透過 Google Cloud 傳輸的資料都會經過端對端加密處理。
通訊安全
Google Play 服務會強制執行下列限制,確保 Wear OS 裝置上安裝的應用程式與附近手持式裝置上安裝的相同應用程式之間的通訊安全無虞:
- 兩部裝置的套件名稱必須一致。
- 兩部裝置的套件簽名必須一致。
無論連線類型為何,其他應用程式都無法存取資料。
設定
Wearable Data Layer API 具有下列依附元件:
- 最新版 Google Play 服務。
- Wear OS 裝置或 Wear OS 模擬器。
在 Wear 模組的 build.gradle 檔案中納入下列依附元件:
dependencies {
...
implementation("com.google.android.gms:play-services-wearable:19.0.0")
}
協助完成初始配對程序
Horologist 在平台 API 的基礎上提供多個輔助程式庫。其中包含資料層程式庫,可協助在行動裝置和 Wear OS 裝置之間建立連線。此外,這個程式庫還提供便利的 API,可執行下列動作:
- 在其他裝置上安裝應用程式。
- 在其他裝置上啟動應用程式。
- 在其他裝置上啟動特定活動。
- 啟動隨附應用程式。
存取資料層
如要呼叫 Data Layer API,請使用 Wearable
類別取得各種用戶端類別 (例如 DataClient
和 MessageClient
) 的例項。
詳情請參閱 DataLayer 範例。
使用最基本的用戶端
如要建立用戶端,請參閱下列程式碼範例:
Kotlin
val dataClient: DataClient = Wearable.getDataClient(context)
Java
DataClient dataClient = Wearable.getDataClient(context);
結構定義可以是任何有效的 Android 結構定義。如果您在 Activity
的範圍內使用 API,請使用 Wearable
類別的 getDataClient()
方法。這樣一來,特定互動能夠以對話方塊顯示 (而非通知),例如要求使用者更新自己的 Google Play 服務版本時。
根據預設,對監聽器的回呼是在應用程式主要 UI 執行緒進行。如要在不同執行緒進行回呼,請使用 WearableOptions
物件指定自訂 Looper
:
Kotlin
runBlocking { Wearable.getDataClient(context, options) }
Java
WearableOptions options = new WearableOptions.Builder().setLooper(myLooper).build(); DataClient dataClient = Wearable.getDataClient(context, options);
詳情請參閱 WearableOptions.Builder
參考資料。
視需要重新建立用戶端執行個體
DataClient
和 MessageClient
等 Wearable API 用戶端的建立成本較低。因此,請視需要使用適合應用程式的樣式,重新建立用戶端,而非保留用戶端。
用戶端狀態 (例如已註冊的事件監聽器組合) 會在所有用戶端共用,並於應用程式執行期間更新 Google Play 服務時保留。