Google Play 開発者サービスの一部である Wearable Data Layer API は、ウェアラブル デバイス(スマートウォッチなど)と接続されたハンドヘルド デバイス(通常はスマートフォン)間の通信チャネルを提供します。デバイス間でデータを同期して転送する方法です。
注: この API は Wear OS スマートウォッチ、およびスマートウォッチとペア設定された Android デバイスでのみ使用できます。iOS スマートフォンとペア設定された Wear OS スマートウォッチの場合、インターネット接続があれば、アプリは他のクラウドベースの API にクエリできます。その他の API について詳しくは、Wear OS でのネットワーク アクセスと同期をご覧ください。
注意: Data Layer API はハンドヘルドとウェアラブル間の通信用に設計されています。これらのデバイス間の通信を設定するために使用できる API は、上記のものだけです。たとえば、通信チャネルを作成するために低レベルのソケットを開こうとしないでください。
一般的なユースケース
Data Layer API は、フィットネスやメディアのユースケースで特に役立ちます。
フィットネス アプリ
Wear OS アプリからモバイルアプリへのエクササイズ データの送信 フィットネス アプリでは、スマートウォッチで取得したエクササイズ データをモバイルアプリまたは Health Connect に書き込むことが必要になることがよくあります。Data Layer API を使用してデータを転送する場合は、メッセージ クライアントを使用して、Wear OS アプリからモバイルアプリにエクササイズ データを送信し、ヘルスコネクトに書き込みます。
自宅でのワークアウト中にモバイル デバイスにライブデータをストリーミングする
一般的なホーム ワークアウトのシナリオは、Wear OS デバイスからモバイル デバイスに心拍数データをストリーミングし、モバイル デバイスの画面に最新の心拍数情報を表示することです。このデータをストリーミングするには、チャンネル クライアントを使用します。
メディアアプリ
スマートウォッチからスマートフォンへの一時停止/再開/開始/終了のアクションでメディア プレーヤーを制御するには、メッセージ クライアントを使用します。
コミュニケーションのオプション
データは次のいずれかの方法で転送されます。
- Wear OS デバイスと他のデバイスとの間に Bluetooth 接続が確立している場合は、直接交換します。
- Google のサーバー上のネットワーク ノードを仲介として使用し、LTE や Wi-Fi などの利用可能なネットワークを介して。
すべてのデータレイヤ クライアントは、デバイスで利用可能な接続に応じて、Bluetooth またはクラウドを使用してデータを交換できます。データレイヤを使用して送信されたデータは、ある時点で Google 所有のサーバーを使用することを前提としています。
Bluetooth
デバイスが Bluetooth で接続されている場合、データレイヤではこの接続が使用されます。デバイス間で 1 つの暗号化されたチャネルがあり、標準の Bluetooth 暗号化を使用して Google Play 開発者サービスによって管理されます。
Cloud
Bluetooth が使用できない場合、データは自動的に 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
リファレンスをご覧ください。
必要に応じてクライアント インスタンスを再作成する
Wearable API クライアント(DataClient
や MessageClient
など)は低コストで作成できます。クライアントを保持するのではなく、アプリに適したスタイルを使用して、必要に応じて再作成します。
クライアントの状態(登録済みのリスナーのセットなど)はすべてのクライアントで共有され、アプリの実行中に Google Play 開発者サービスが更新されても保持されます。