Сеть Mesh/p2p на Android без взаимодействия с пользователем

Мы группа студентов, изучающих информатику, в настоящее время работаем над проектом в рамках нашего магистра.

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

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

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

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

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

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


person Morten Baagøe    schedule 10.03.2015    source источник


Ответы (3)


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

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

person Eric Ruder    schedule 12.03.2015
comment
Ты прав. Функциональность службы BLE (также известная как периферийный режим) была представлена ​​​​в версии 5.0. Виноват. Также кажется, что требуется аппаратная поддержка, недоступная на старых устройствах. - person mach; 13.03.2015

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

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

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

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

Удачи!

person mach    schedule 10.03.2015

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

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

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

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

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

person SnowWolf    schedule 05.04.2015