Códigos de error en conexiones cercanas 2.0

He estado experimentando con el nuevoConexiones cercanas de Android v2.0 API La mayoría de mis dispositivos ahora pueden hablar entre ellos la mayor parte del tiempo, pero también recibo muchoscódigos de error cuando intentas conectarte. Comprobaciónstatus.getStatusCode() dentro de mi programa, puedo ver los siguientes códigos de retorno:

STATUS_ALREADY_CONNECTED_TO_ENDPOINT (8003)STATUS_BLUETOOTH_ERROR (8007)STATUS_ENDPOINT_IO_ERROR (8012)ESTADO_ERROR (13)

Me está costando mucho entender esto. El primer código de errorparece se explica por sí mismo, excepto que lo veo en los casos en que no he accedido a la devolución de llamada onConnectionResult con un código de retorno "ÉXITO" a ambos lados de la supuesta conexión. Mi código actual está lleno de declaraciones de rastreo, y vería entradas de registro si se hubieran alcanzado esas devoluciones de llamada. Entonces, tal vez los dispositivos estén conectados en algún nivel inferior, pero si es así, el código de nivel superior no siempre se entera.

Supongo que STATUS_BLUETOOTH_ERROR indica un error de Bluetooth en el lado que lo registra, mientras que STATUS_ENDPOINT_IO_ERROR indica un error (probablemente relacionado con Bluetooth) en el otro extremo. ¿Es posible obtener más detalles? El estado STATUS_ERROR (13) que veo de vez en cuando suena como el tipo de código de error que un programador usaría para esos momentos de "WTF, nunca deberíamos llegar aquí", pero sin acceso al código fuente, solo puedo adivinar.

Tenga en cuenta que veo estos errores entre dispositivos que se comunican muy bien entre sí en otros momentos, usando el mismo código. A veces, si el código vuelve a intentarlo suficientes veces, finalmente obtiene una conexión estable. A veces se conecta y se desconecta instantáneamente del otro extremo. A veces solo recibo una secuencia interminable de mensajes de error repetidos (STATUS_BLUETOOTH_ERROR y / o STATUS_ENDPOINT_IO_ERROR).

Estoy usando conexiones cercanas con la estrategia de conexiónP2P_CLUSTER. Estos problemas parecen ocurrir con mayor frecuencia cuando ambas partes hacen publicidad y descubrimiento. Sin embargo, escribí dos programas más pequeños que se especializan en publicidad o descubrimiento, y a veces también reciben estos errores (pero con menos frecuencia).

En los mensajes de seguimiento, también he notado muchos mensajes de advertencia de Conexiones cercanas que se ven así:

09-04 22:54:40.070 3866-3924/? W/NearbyConnections: Cannot deserialize BluetoothDeviceName: expecting min 16 raw bytes, got 6

Supongo que esto se debe a que Nearby Connections usa sus propios tokens cortos (comoZGbx) en lugar del nombre del dispositivo Bluetooth? Sin embargo, no estoy del todo seguro de eso. Y de todos modos, si se trata de tokens especiales de Nearby Connections, ¿por qué emitiría mensajes de advertencia al respecto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta