Wearable Data Layer API 是 Google Play 服務的一部分,可在穿戴式裝置 (例如智慧手錶) 和連線手持裝置 (通常是智慧型手機) 之間提供通訊管道。這是在裝置之間同步處理及傳輸資料的方式。
注意:這個 API 僅適用於 Wear OS 手錶和配對的 Android 裝置。Wear OS 手錶與 iOS 手機配對時,在有網際網路連線的情況下,應用程式可以查詢其他雲端式 API。如要進一步瞭解其他 API,請參閱「在 Wear OS 上存取網路和進行同步處理」。
注意:由於資料層 API 是專為手持裝置與穿戴式裝置之間的通訊而設計,因此只有這些 API 可用於設定這類裝置間的通訊。舉例來說,請勿嘗試開啟低階通訊端來建立通訊管道。
常見用途
Data Layer API 特別適合健身和媒體用途。
健身應用程式
將運動資料從 Wear OS 應用程式傳送至行動應用程式 健身應用程式通常需要將手錶擷取的運動資料寫入行動應用程式或 Health Connect。如果使用 Data Layer API 傳輸資料,請使用訊息用戶端,將運動資料從 Wear OS 應用程式傳送至行動應用程式,以便寫入 Health Connect。
在家運動時,將即時資料串流至行動裝置
常見的居家健身情境是將心率資料從 Wear OS 裝置串流至行動裝置,並在使用者的行動裝置螢幕上顯示最新的心率資訊。如要串流這類資料,請使用管道用戶端。
媒體應用程式
如要透過從手錶傳送至手機的暫停/繼續/開始/結束動作來控制媒體播放器,請使用訊息用戶端。
通訊選項
資料會透過下列其中一種方式轉移:
- 直接:Wear OS 裝置與其他裝置之間已建立藍牙連線。
- 透過可用網路 (例如 LTE 或 Wi-Fi),使用 Google 伺服器上的網路節點做為中介。
視裝置可用的連線方式而定,所有資料層用戶端都可以透過藍牙或雲端交換資料。假設透過資料層傳輸的資料可能會在某個時間點使用 Google 自有伺服器。
藍牙
當裝置透過藍牙連線時,資料層會使用這個連線方式。裝置之間會有一個採用標準藍牙加密機制的加密管道,由 Google Play 服務管理。
雲端
無法使用藍牙時,系統會自動透過 Google 的雲端服務轉送資料。所有透過 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,可執行下列操作:
- 在其他裝置上安裝應用程式。
- 在其他裝置上啟動應用程式。
- 在其他裝置上啟動特定活動。
- 啟動隨附應用程式。
存取資料層
如要呼叫資料層 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 服務時保留。