Data Layer API を使用してネットワーク上のデバイスを検出する

デバイスは、Wi-Fi またはモバイル接続を使用して直接インターネットへの接続を確立するか、ペア設定された Bluetooth デバイスを介して間接的に確立できます。

到達可能なノードと近くのノード

デバイスがオンラインであり、Bluetooth を介して直接、またはクラウドを仲介して間接的に別のデバイスと通信できる場合、デバイスは到達可能とみなされます。

クラウドを使用せずに Bluetooth で直接接続できるデバイスは、近くにあると見なされます。

再接続時間に影響するアクティビティ

特定の状況下では、デバイスが接続を再確立するのに最大 4 分かかる場合があります。たとえば、次のようなシナリオがあります。

  • Wear OS デバイスがアクティブでない: Wear OS デバイスをユーザーの手首から取り外した場合や、長時間アクティブに使用されていない場合、再接続時間が長くなることがあります。
  • Doze 状態: ハンドヘルドの省電力 Doze 状態により、バックグラウンド プロセスが制限され、デバイスの再接続時間が長くなる可能性があります。
  • ユーザー操作: ユーザーがハンドヘルド デバイスと Wear OS デバイスの両方の操作をほぼ同時に開始すると、多くの場合、再接続の処理が速くなります。

ノード クライアントを使用してすべてのデバイスを検出する

NodeClient オブジェクトは、各デバイスの機能に関係なく、ネットワークに接続されている Android 搭載デバイスを識別し、そのリストをブロードキャストします。ネットワークに接続された新しいデバイス、既存のデバイスがオフラインになった場合など、デバイス上のすべてのアプリは、これらのイベント通知を受信します。

NodeClient クラスは、アプリがインストールされていないデバイスを検出する場合に特に便利です。

ケーパビリティ クライアントを使用して特定のデバイスを検出する

CapabilityClient オブジェクトは、Wear OS ネットワーク上のどのデバイスが特定のアプリ機能をサポートしているかに関する情報を提供します。機能とは、アプリがビルド時に定義するか、実行時に動的に構成する機能です。

たとえば、Android のモバイル アプリは、動画再生のリモート コントロールをサポートしていることをアドバタイズできます。そのアプリの Wear OS バージョンでは、CapabilityClient を使用して、アプリのモバイル バージョンが付近のデバイスにインストールされているかどうか、およびその機能がサポートされているかどうかを確認できます。サポートしている場合、Wear OS アプリに再生ボタンと一時停止ボタンが表示され、ユーザーはモバイル デバイスで再生中の動画を Wear OS デバイスから操作できます。ケーパビリティ ブロードキャストも逆方向に機能します。Wear OS アプリは、サポート対象の機能をリストできます。

アプリの新機能を確認する

CapabilityClient を使用して、通信する必要があるデバイスのノード ID を特定します。たとえば、ハンドヘルド デバイスのアプリに新機能が存在するかどうかを確認する必要がある場合は、ハンドヘルド側でその新機能に対応するケーパビリティを作成します。これにより、Wear OS アプリは、その機能をサポートするデバイスを照会できます。すべてのデバイスに機能がない場合、ユーザーは、この機能をサポートするアプリのバージョンを持っていないことを意味します。アプリのロジックで適切に処理する必要があります。ハンドヘルド デバイスが常に通信する適切なノードであると仮定すると、電話アプリがこの機能をサポートしていないため、メッセージが配信されない可能性があります。

同じ Wear OS デバイスが 1 つのネットワーク上にあるかどうかを確認する

CapabilityClient を使用すると、近くに他の Android 搭載デバイスがないためにアプリをスタンドアロン モードで動作させる必要があるかどうかを確認できます。FILTER_ALL を渡すと、他のデバイスが結果に表示されなくなります。