Хорошо знать. Я только что понял, что моя проблема из моего предыдущего комментария была вызвана тем, что, когда я начал намерение выбрать изображение (для отправки файла на другое устройство), основное действие было приостановлено. Видимо, все отключается, когда активность уходит в фон. Я уверен, что причина в разряде батареи. Я действительно надеялся, что IntentService с уведомлением переднего плана также может использовать API-интерфейс Nearby. Не уверен, что это возможно, хотя.

периментировал с новымAndroid Nearby Connections v2.0 API. Большинство моих устройств теперь могут общаться друг с другом большую часть времени, но я также получаю многокоды ошибок назад при попытке подключения. проверкаstatus.getStatusCode() внутри моей программы я вижу следующие коды возврата:

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

Мне трудно разобраться в этом. Первый код ошибкикажется Само собой разумеется, за исключением того, что я вижу это в случаях, когда я не нажал на обратный вызов onConnectionResult с кодом возврата «УСПЕХ» по обе стороны от предполагаемого соединения. Мой текущий код полон операторов трассировки, и я вижу записи в журналах, если эти обратные вызовы были достигнуты. Так что, возможно, устройства подключены на более низком уровне, но если это так, код более высокого уровня не всегда слышит об этом.

Я предполагаю, что STATUS_BLUETOOTH_ERROR указывает на ошибку Bluetooth на стороне, которая регистрирует его, в то время как STATUS_ENDPOINT_IO_ERROR указывает на ошибку (возможно, с Bluetooth) на другом конце? Можно ли получить более подробную информацию? Состояние STATUS_ERROR (13), которое я вижу время от времени, звучит как код ошибки, который программист использовал бы для тех моментов «WTF, мы никогда не попадем сюда», но без доступа к исходному коду я могу только догадываться.

Обратите внимание, что я вижу эти ошибки между устройствами, которые красиво общаются друг с другом в другое время, используя один и тот же код. Иногда, если код повторяется достаточно много раз, он в конечном итоге получает стабильное соединение. Иногда он подключается и мгновенно отключается от другого конца. Иногда я просто получаю бесконечный поток повторяющихся сообщений об ошибках (STATUS_BLUETOOTH_ERROR и / или STATUS_ENDPOINT_IO_ERROR).

Я использую Nearby Connections со стратегией подключенияP2P_CLUSTER, Эти проблемы чаще всего случаются, когда обе стороны занимаются как рекламой, так и открытием. Тем не менее, я написал две меньшие программы, которые специализируются либо на рекламе, либо на обнаружении, и иногда они тоже получают эти ошибки (но реже).

В сообщениях трассировки я также заметил много предупреждающих сообщений от ближайших подключений, которые выглядят так:

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

Я предполагаю, что это потому, что Nearby Connections использует свои собственные короткие токены (например,ZGbx) вместо названия устройства Bluetooth? Я совсем не уверен в этом. И в любом случае, если это собственные специальные токены Nearby Connections, то почему он будет выдавать предупреждающие сообщения об этом?

Ответы на вопрос(2)

Ваш ответ на вопрос