Android Wear + Wearable ChannelApi openChannel no se abre con nodo remoto?

Al abrir un canal a través de un nodo local :

Wearable.NodeApi.getLocalNode(googleApiClient) 

… el onChannelOpened Listener se activa correctamente .

Sin embargo, al abrir un canal a través de un nodo remoto :

 Wearable.NodeApi.getConnectedNodes(googleApiClient) 

… el OnChannelOpened Listener nunca se dispara y, posteriormente, nunca puede compartir archivos a través de este canal.

Sé que openChannel se requiere para ambos dispositivos, pero los oyentes del canal están encendiendo solamente en el dispositivo que lo abrió localmente … ¿Cómo el dispositivo alejado envía o recibe archivos también si no sabe que está conectado? Aquí está el desglose entre los dos dispositivos

Usable:

  1. Guardar archivo local – con éxito
  2. .openChannel con el nodo local (usable) – exitoso
  3. .sendFile to channel – exitoso

Manejo retenido:

  1. .openChannel con nodo remoto (usable) – falla
  2. .receiveFile from channel – fall
  3. Mostrar archivo – fallar

Resolución de problemas

Aquí hay algunas cosas para comprobar:

  • ¿Está recibiendo eventos de mensajes o actualizaciones de elementos de datos? Si llama a Wearable.MessageApi.sendMessage , ¿recibe un onMessageReceived en el otro dispositivo? Si no, podría haber algo incorrecto con la configuración de WearableListenerService en el otro nodo o con la forma en que se empaqueta su aplicación (por ejemplo, su microapp y la aplicación están en paquetes diferentes o están firmadas con diferentes claves).

  • ¿Está ejecutando la última versión de la aplicación Android Wear ? Se ha agregado recientemente la API de canal y es posible que su reloj todavía no haya recibido la actualización para admitirla. La versión 1.1.1.1889093 debería estar bien.

Cómo usar la API de canal

A propósito, suena como usted puede simplificar su uso de canales. No es necesario abrir canales tanto al nodo local como al nodo remoto. La forma en que normalmente utilizaría la API es:

  1. Decida si desea iniciar el canal desde el reloj o desde el teléfono. En este caso, suena como si estuvieras empezando desde el reloj.

  2. En la aplicación de reloj, llame a Wearable.ChannelApi.openChannel , apuntando a la aplicación de teléfono. Este método devuelve un PendingResult<OpenChannelResult> . Cuando se complete correctamente, obtendrá un objeto Channel . Este es el lado del reloj del canal, y se puede usar para enviar un archivo.

  3. En la aplicación de teléfono, incluya un WearableListenerService , que debe obtener un evento onChannelOpened . A ese método se le pasará un objeto Channel , que es el lado del teléfono del canal. Puede llamar a receiveFile en ese objeto.

Así como se puede ver, sólo debe tener una llamada a openChannel : al nodo remoto.

  • No se muestra la notificación de Android Wear si se utiliza FLAG_NO_CLEAR
  • "Error al resolver: com.android.support:support-v4:26.0.0" y otros errores similares en la sincronización de Gradle
  • Formato de comando de juego entre controlador de bluetooth y consola
  • API del sensor de ritmo cardíaco para Android
  • BoxInsetLayout no funciona
  • Implementación de aplicaciones Android Wearable en Moto 360 para propósitos de depuración
  • Envío de datos de una actividad a WearableListenerService
  • Imagen de fondo para la notificación de desgaste androide
  • Los paquetes de desgaste de Android no funcionan
  • ¿Cómo conectar múltiples emuladores de desgaste de Android a un dispositivo de mano?
  • El cuadro de selección de dispositivos Android Wear dice "localhost offline: 4444 minSdk (API 20)> deviceSdk (API 1)"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.