Wearable Data Layer API 是 Google Play 服務的一部分,可在穿戴式裝置 (例如智慧手錶) 和連線手持裝置 (通常是智慧型手機) 之間提供通訊管道。這是在裝置之間同步處理及傳輸資料的方式。
注意:這個 API 僅適用於 Wear OS 手錶和配對的 Android 裝置。Wear OS 手錶與 iOS 手機配對時,在有網際網路連線的情況下,應用程式可以查詢其他雲端式 API。如要進一步瞭解其他 API,請參閱「在 Wear OS 上存取網路和進行同步處理」。
注意:由於資料層 API 是專為手持裝置和穿戴式裝置之間的通訊而設計,因此只有這些 API 可用於設定這類裝置間的通訊。舉例來說,請勿嘗試開啟低階通訊端來建立通訊管道。
常見用途
Data Layer API 特別適合健身和媒體用途。
健身應用程式
健身應用程式通常需要將手錶擷取的運動資料寫入行動應用程式或 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 服務時保留。