Cómo descubrir dispositivos en una red con las APIs de Data Layer

Los dispositivos pueden establecer una conexión a Internet directamente con una conexión Wi-Fi o móvil, o bien de forma indirecta a través de un dispositivo Bluetooth vinculado.

Nodos cercanos y accesibles

Un dispositivo se considera accesible cuando está en línea y disponible para comunicarse con otro dispositivo, ya sea de forma directa a través de Bluetooth o indirectamente usando la nube como intermediario.

Un dispositivo se considera cercano si se puede conectar directamente a través de Bluetooth, sin usar la nube.

Actividades que afectan el tiempo de reconexión

En ciertas circunstancias, los dispositivos pueden tardar hasta 4 minutos para restablecer la conexión. Estas situaciones incluyen lo siguiente:

  • Inactividad del dispositivo Wear OS: Si se quita un dispositivo Wear OS de la muñeca del usuario o no se usa activamente durante un período prolongado, el tiempo de reconexión podría extenderse.
  • Estado Descanso: El estado Descanso de ahorro de energía de un dispositivo portátil puede limitar los procesos en segundo plano, lo que podría aumentar el tiempo de reconexión del dispositivo.
  • Interacción del usuario: Si el usuario comienza a interactuar con un dispositivo de mano y un dispositivo Wear OS aproximadamente al mismo tiempo, suele acelerar el proceso de reconexión.

Descubre todos los dispositivos que usan un cliente de nodo

Un objeto NodeClient identifica la lista de dispositivos con tecnología Android conectados a una red y la transmite, independientemente de la capacidad de cada dispositivo. Todas las apps de un dispositivo reciben estas notificaciones de eventos, como un dispositivo nuevo que se une a la red o un dispositivo existente que se desconecta.

La clase NodeClient es particularmente útil para descubrir dispositivos que no tienen tu app instalada.

Descubre dispositivos específicos mediante un cliente de funciones

Un objeto CapabilityClient proporciona información sobre qué dispositivos de la red de Wear OS admiten funciones específicas de la app. Una capacidad es una función que una app define en el tiempo de compilación o que configura de forma dinámica en el tiempo de ejecución.

Por ejemplo, una app para dispositivos móviles Android podría anunciar que admite el control remoto de la reproducción de video. La versión para Wear OS de esa app puede usar CapabilityClient para comprobar si la versión para dispositivos móviles de la app está instalada en un dispositivo cercano y admite esa función. Si es así, la app para Wear OS puede mostrar botones de reproducción y pausa para que los usuarios puedan controlar un video que se reproduce en su dispositivo móvil desde su dispositivo Wear OS. La transmisión de capacidad también funciona en la dirección opuesta; las apps para Wear OS pueden enumerar las funciones que admiten.

Comprueba las nuevas funciones de tu app

Usa CapabilityClient para determinar el ID de nodo de un dispositivo con el que necesites comunicarte. Por ejemplo, si necesitas verificar la presencia de una función nueva en tu app para dispositivos de mano, crea una función para esa nueva función en el lado portátil. Luego, tu app para Wear OS podrá consultar los dispositivos compatibles con esa función. Si la función no está presente en todos los dispositivos, significa que el usuario no tiene una versión de tu app que admita esta función, lo que deberías controlar correctamente en la lógica de tu app. Si supones que el dispositivo de mano es siempre el nodo correcto para comunicarse, es posible que los mensajes no se entreguen, ya que la app para teléfonos no admite la función.

Cómo determinar si un dispositivo Wear OS es el único en una red

Puedes usar el CapabilityClient para verificar si tu app debe funcionar en modo independiente porque no hay otros dispositivos con Android cerca. Si pasas FILTER_ALL, no deberían aparecer otros dispositivos en los resultados.