2015-03-10 5 views
2

Мы - группа студентов-информатиков, в настоящее время работающая над проектом как часть нашего Мастера.Сеть Mesh/p2p на Android, без взаимодействия с пользователем

Наша проблема заключается в следующем.

Мы работаем над приложением для Android, которое требует от устройств обмена небольшими объемами данных. Это необходимо для работы без мобильных соединений или существующих сетей Wi-Fi, например. используя Bluetooth, WiFi прямой и т. д.

Мы рассмотрели Bluetooth smart, который позволяет устройству запускать рекламный режим, отправляя 31 байт данных, это было бы более чем достаточно для наших нужд. Но он поддерживается только в Android 5.0, поэтому это серьезно ограничивает нашу доступность.

Подтверждение сообщения и проверка ошибок - это плюс, но это не является обязательным требованием. Таким образом, возможно подключение Udp.

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

Вкратце, что мы ищем, является способом для устройства транслировать небольшой объем данных, что составляет около 24 байтов. Без пользователя, которому нужно что-то делать, кроме запуска приложения.

ответ

1

Bluetooth Smart aka Bluetooth Low Energy (BLE) не требует взаимодействия с пользователем при подключении и является supported from API level 18, а не 21. BLE требует, чтобы на телефоне имелось оборудование Bluetooth 4.0.

Быстрое сканирование и время соединения (< 5ms) также является большим плюсом для Bluetooth Low Energy.

При переключении между сервером и клиентом можно передавать сообщения. Сегодня большинство стеков Bluetooth для Bluetooth позволяют использовать 8 или более одновременных соединений GATT, что позволяет иметь довольно эффективную сеть.

Сегодня нет предопределенных профилей GATT для того, что вы пытаетесь сделать, но есть необходимость, и, надеюсь, вы придумаете хорошее решение.

Удачи вам!

1

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

To Mach: Несмотря на то, что 4.3 может выступать в качестве центрального устройства и как таковое действует как клиент, 5.0 была версией Android, которая ввела способность устройства действовать как периферийное устройство и выступать в качестве сервера и вывести информацию. Это то, что большинство моих чтений побудило меня поверить. Я что-то упускаю? Если центральное устройство способно рекламировать информацию, то в чем разница между центральными и периферийными устройствами?

+1

Вы верны. Функциональность BLE Service (акаферический режим) была введена в 5.0. Виноват. Также кажется, что аппаратная поддержка недоступна на старых устройствах. – mach

0

Я делал аналогичный проект, как вы, ребята. Потом я узнал, что это:

https://stackoverflow.com/a/5886544/2989374

Они используют createInsecureRfcommSocketToServiceRecord и listenUsingInsecureRfcommWithServiceRecord.

После тестирования я смог отправить сообщение между двумя непарными устройствами.

Надеюсь, это поможет.