Wear でのデータの送信と同期

Wear OS by Google 搭載のスマートウォッチは、Android または iOS スマートフォンにアクセスせずにネットワークと直接通信できます。

このページには、以下の依存関係と前提条件があります。

なお、Google Play 開発者サービスの構成要素である Wearable Data Layer API は、アプリ用のオプションの通信チャネルを提供します。Wear アプリは Wearable Data Layer API を使用してスマートフォン アプリと通信できますが、この API を使用したネットワークへの接続は推奨されません。

Data Layer API は、システムが送信および同期できる一連のデータ オブジェクトと、特定のイベントをアプリに通知するリスナーで構成されています。

データアイテム
DataItem は、ハンドヘルドとウェアラブル間の自動同期機能をデータ ストレージに提供します。
アセット
Asset オブジェクトは、画像などのデータのバイナリ blob の送信に使用します。データアイテムへのアセットのアタッチはデベロッパーが行い、転送処理はシステムが自動的に行います。サイズの大きなアセットをキャッシュに保存して再送信が行われないようにすることで、Bluetooth の帯域幅を節約できます。
SMS
MessageClient はメッセージの送信が可能なため、リモート プロシージャ コール(RPC)に適しています。たとえば、ハンドヘルドのメディア プレーヤーをウェアラブルから操作したり、ウェアラブルのインテントをハンドヘルドから開始したりできます。メッセージは、一方向のリクエストにも、リクエスト / レスポンス通信モデルにも適しています。ハンドヘルドとウェアラブルが接続されている場合、システムは配信対象のメッセージをキューに登録し、成功結果コードを返します。これらのデバイスが接続されていない場合は、エラーが返されます。成功結果コードは、メッセージが正常に配信されたことを示すものではありません。結果コードの受信後にデバイス間の接続が切断されることもあります。
チャネル
ChannelClient を使用すると、ハンドヘルドからウェアラブル デバイスにサイズの大きなエンティティ(音楽や映画のファイルなど)を転送できます。データ転送に ChannelClient を使用すると、以下のようなメリットが得られます。
  • 2 台以上の接続済みのデバイス間でサイズの大きなデータファイルを転送できます。 DataItem オブジェクトにアタッチされた Asset オブジェクトを使用する場合、自動同期は行われません。 ChannelClient では、接続されているデバイスと同期する前にローカル デバイスでアセットのコピーを作成する DataClient よりもディスク容量を節約できます。
  • サイズが大きすぎて MessageClient では送信できないファイルを確実に送信できます。
  • ストリーム データ(ネットワーク サーバーから取得した音楽や、マイクから入力された音声データなど)を転送できます。
WearableListenerService(サービス用)
WearableListenerService を拡張すると、サービスで重要なデータレイヤ イベントをリッスンできます。システムが WearableListenerService のライフサイクルを管理し、データアイテムやメッセージを送信する必要がある場合はサービスにバインドし、処理が不要な場合はサービスをバインド解除します。
OnDataChangedListener(フォアグラウンドのアクティビティ用)
アクティビティに OnDataChangedListener を実装すると、アクティビティがフォアグラウンドで実行されている場合に重要なデータレイヤ イベントをリッスンできます。これを WearableListenerService の代わりに使用すると、ユーザーが積極的にアプリを使用している場合にのみ変更をリッスンできます。

警告: これらの API はハンドヘルドとウェアラブル間の通信用に設計されています。これらのデバイス間の通信の設定に使用する必要がある API は、これらだけです。たとえば、通信チャネルを作成するために低レベルのソケットを開こうとしないでください。

重要: DataLayer API によるデバイス間の通信が正常に行われるようにするには、スマートフォンと Wear APK の署名および署名スキームが同一である必要があります。これには、v1 または v2(あるいはその両方)の署名の使用が含まれます。build.gradle で署名スキームが正しく設定されていることをご確認ください。また、署名済み APK の生成ウィザードを使用する場合にも、署名スキームの設定をご確認ください。

Wear OS では、1 台のハンドヘルド デバイスに複数のウェアラブルを接続できます。たとえば、ユーザーがハンドヘルドにメモを保存すると、ユーザーのすべての Wear デバイスにそのメモが自動的に表示されます。デバイス間のデータの同期をサポートするために、Google のサーバーはこれらのデバイスで構成されるネットワークにクラウドノードをホストします。システムは、直接接続されているデバイス、クラウドノード、Wi-Fi でクラウドノードに接続されているウェアラブル デバイスにデータを同期します。

図 1. クラウドノード、ハンドヘルド デバイス、ウェアラブル デバイスで構成されたサンプル ネットワーク

ネットワーク アクセスと同期
このレッスンでは、高帯域幅ネットワークを確保する方法について説明します。このレッスンは、クラウド メッセージングなどを導入する場合の出発点にもなります。
ウェアラブル データレイヤにアクセスする
このレッスンでは、クライアントを作成して Data Layer API にアクセスする方法について説明します。
データアイテムを同期する
データアイテムは、複製されたデータストアに保存されるオブジェクトです。データストアはハンドヘルドからウェアラブルに自動的に同期されます。
アセットを転送する
アセットは、一般に画像やメディアの転送に使用するデータのバイナリ blob です。
メッセージを送信、受信する
メッセージは、ウェアラブルとハンドヘルドの間で送受信可能なファイア アンド フォーゲット形式のメッセージ用に設計されています。
データレイヤ イベントを処理する
データレイヤに対する変更とイベントが通知されます。
Wear アプリを GoogleApi に移行する
GoogleApiClient クラスから移行します。