Иметь возможность отправлять сообщения / байты одновременно на несколько устройств, используя соседние соединения - PullRequest
0 голосов
/ 12 октября 2018

Чтобы опробовать близлежащий API, я решил создать приложение, которое позволило бы учителю отслеживать посещаемость ученика в классе.Подобно тому, что делает Карен Чанг .

Я прошел через примеры кодов Google на rockpaperscissors и walkietalkie

Но кажется только одно устройстводля подключения в любое время , когда я тестирую образцы с помощью 4 телефонов.

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

Как я могу использовать близлежащий интерфейс API для подключения и отправки данных на новые и несколько устройств одновременно?

1 Ответ

0 голосов
/ 12 октября 2018

Это отличный пример использования, о котором мы говорили в прошлом.

Если это специально для посещаемости, то вам не нужно устанавливать соединение.Вы можете сделать рекламу каждого устройства, пока одно устройство постоянно сканирует.Таким образом, вы быстро создадите список устройств.

Если вы хотите делать больше, чем просто посещение, например, например, отправляя назначение каждому устройству, вам нужно создать меш.Для начала вы захотите использовать Strategy.P2P_CLUSTER.У нас есть 3 стратегии, доступные в ближайших соединениях (CLUSTER, STAR, POINT_TO_POINT), и кластер является наиболее общей.С помощью кластера вы можете подключаться к любому количеству устройств и получать входящие подключения с любого количества устройств.Или почти ... Bluetooth-радио внутри телефонов слабое и может удерживать только 3 ~ 4 соединения одновременно.

Чтобы иметь возможность подключить все ~ 30 устройств, я бы рекомендовал сформировать 'змею-как 'связь.Голова и хвост устройства будут сканировать и рекламировать одновременно (а устройства, которые ни к кому не подключены, считаются змеями длиной 1).Головы и хвосты будут продолжать соединяться друг с другом (будучи уверенными, что не будут соединяться с собой *), и вы довольно быстро получите длинную цепочку соединений, соединяющих всех вместе.Оттуда вы можете пересылать сообщения по цепочке, чтобы убедиться, что все их получают.

  • Чтобы избежать подключения к себе, вы можете назначить каждому устройству случайное число (например, 1, 4, 8,10) и каждое устройство пытается подключиться к следующему наибольшему номеру, или вы можете передать сообщение при подключении и отключиться, если вы получаете эхо-сигнал назад (поскольку трансляция прошла по кругу).
...