Códigos de erro nas conexões próximas 2.0

Eu tenho experimentado o novoConexões próximas do Android v2.0 API. A maioria dos meus dispositivos agora pode conversar um com o outro a maior parte do tempo, mas também recebo muitascódigos de erro de volta ao tentar conectar. Verificandostatus.getStatusCode() dentro do meu programa, posso ver os seguintes códigos de retorno:

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

Estou tendo dificuldades para entender isso. O primeiro código de erroparece auto-explicativo, exceto pelo fato de o ver nos casos em que não atingi o retorno de chamada onConnectionResult com um código de retorno "SUCCESS" nos dois lados da conexão alegada. Meu código atual está cheio de instruções de rastreamento e eu veria entradas de log se esses retornos de chamada fossem alcançados. Portanto, talvez os dispositivos estejam conectados em algum nível inferior, mas, nesse caso, o código de nível superior nem sempre ouve.

Suponho que STATUS_BLUETOOTH_ERROR indica um erro de Bluetooth no lado que o registra, enquanto STATUS_ENDPOINT_IO_ERROR indica um erro (provavelmente envolvendo Bluetooth) do outro lado? É possível obter mais detalhes? O status STATUS_ERROR (13) que eu vejo de vez em quando soa como o tipo de código de erro que um programador usaria para aqueles momentos de "WTF, nunca devemos chegar aqui", mas sem acesso ao código-fonte, só posso adivinhar.

Observe que vejo esses erros entre dispositivos que se comunicam lindamente em outros momentos, usando o mesmo código. Às vezes, se o código tentar novamente o suficiente, ele eventualmente obterá uma conexão estável. Às vezes, ele se conecta e é desconectado instantaneamente da outra extremidade. Às vezes, recebo um fluxo interminável de mensagens de erro repetidas (STATUS_BLUETOOTH_ERROR e / ou STATUS_ENDPOINT_IO_ERROR).

Estou usando Conexões próximas com a estratégia de conexãoP2P_CLUSTER. Esses problemas parecem ocorrer com mais frequência quando os dois lados fazem propaganda e descoberta. No entanto, escrevi dois programas menores, especializados em publicidade ou descoberta, e às vezes eles também recebem esses erros (mas com menos frequência).

Nas mensagens de rastreamento, também notei muitas mensagens de aviso do Near Connections que se parecem com isso:

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

Suponho que isso ocorre porque o Near Connections usa seus próprios tokens curtos (comoZGbx) em vez do nome do dispositivo Bluetooth? Eu não tenho certeza disso, no entanto. De qualquer forma, se esses são os tokens especiais das conexões próximas, por que eles emitem mensagens de aviso sobre isso?

questionAnswers(2)

yourAnswerToTheQuestion