API соседних соединений - соединение N-to-1 часто приводит к STATUS_BLUETOOTH_ERROR или медленному соединению - PullRequest
0 голосов
/ 29 октября 2018

В последнее время моя команда работает над разработкой приложения для Android, которое будет служить в качестве цели, аналогичной инструменту посещаемости учителя. Идея в том, что устройство учителя будет рекламировать, и около 20 устройств учеников обнаружат и подключатся к нему.

Сейчас мы проводим тестирование с тремя устройствами Kindle Fire 7. Один - «учитель», а два других - студенты Наш вариант использования:

  1. Устройство "Учитель" рекламирует
  2. Первое «студенческое» устройство обнаруживает
  3. Убедитесь, что первое "ученическое" устройство подключено к учителю
  4. Второе «ученическое» устройство обнаруживает
  5. Убедитесь, что второе "ученическое" устройство подключено к учителю

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

Я просмотрел сообщения о переполнении стека относительно этой ошибки Bluetooth, и мы попытались внести исправления, которые были предложены, - включив Bluetooth, выбрав в качестве стратегии P2P_STAR и P2P_CLUSTER, перезапустив устройства, остановив обнаружение неисправное устройство и повторная попытка обнаружения и запроса соединения, но, к сожалению, похоже, что ни один из них действительно не решает проблему.

Кто-нибудь знает, почему это может быть успешным на некоторых устройствах, но не на других? Мы убедились, что все эти устройства имеют одинаковые сетевые настройки / конфигурации, и они имеют одинаковую модель Kindle, поэтому я не уверен, что может пойти не так.

РЕДАКТИРОВАТЬ: я не включил свой код, потому что есть много, касающихся соседних подключений, и я не хотел, чтобы длина этого поста была раздутой; В общем, мы напрямую подражали подходу, продемонстрированному примерами репозиториев Google для Rock, Paper, Scissors и Walkie-Talkie. Если было бы полезно увидеть код, я опубликую его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...