Сеть Mesh/ P2P на Android, без взаимодействия с пользователем
Мы группа студентов, изучающих информатику, в настоящее время работаем над проектом в рамках нашего магистра.
Наша проблема заключается в следующем.
Мы работаем над приложением для Android, которое требует, чтобы устройства обменивались небольшими объемами данных. Это должно работать без мобильных подключений или существующих сетей WiFi, например, используя Bluetooth, WiFi direct и т. Д.
Мы рассмотрели Bluetooth Smart, который позволяет устройству работать в рекламном режиме, отправляя 31 байт данных, это будет более чем достаточно для наших нужд. Но это поддерживается только в Android 5.0, так что это серьезно ограничивает нашу доступность.
Подтверждение сообщения и проверка ошибок - это плюс, но это не обязательно. Так что соединение UDP возможно.
Все решения, которые мы можем найти, включают в себя либо то, что пользователь активно принимает одноранговый запрос, что неприемлемо, так как могут быть сотни устройств, взаимодействующих друг с другом, или рутирующих устройство.
Короче говоря, мы ищем способ для устройства передавать небольшое количество данных, минимум 24 байта. Без необходимости пользователю делать что-либо кроме запуска приложения.
3 ответа
Поскольку у меня недостаточно репутации, чтобы отвечать на ваш комментарий, мне придется написать ответ в качестве ответа и надеяться, что вы его прочитаете.
To Mach: Хотя это правда, что 4.3 может выступать в качестве центрального устройства и в качестве такового выступать в качестве клиента, 5.0 была версия для Android, которая представила возможность устройства выступать в качестве периферийного устройства и действовать как сервер и выдавать информацию, Это то, во что я поверил. Я что-то пропустил? Если центральное устройство способно рекламировать информацию, то в чем разница между центральным и периферийными устройствами?
Bluetooth Smart, также называемый Bluetooth Low Energy (BLE), не требует взаимодействия с пользователем при сопряжении и поддерживается с уровня API 18, а не 21. BLE требует, чтобы в телефоне было установлено оборудование Bluetooth 4.0.
Быстрое сканирование и время подключения (<5 мс) также являются большим плюсом для Bluetooth с низким энергопотреблением.
При переключении между сервером и клиентом можно было бы передавать сообщения. Сегодня большинство стеков Bluetooth для Android допускают 8 или более одновременных GATT-соединений, что позволяет создать довольно эффективную ячеистую сеть.
В настоящее время нет предопределенных профилей GATT для того, что вы пытаетесь сделать, но есть необходимость, и, надеюсь, вы найдете хорошее решение.
Удачи!
Я занимался тем же проектом, что и вы, ребята. Тогда я узнал это:
/questions/38571298/bluetooth-soedinenie-bez-podtverzhdeniya-polzovatelya/38571306#38571306
Они используют createInsecureRfcommSocketToServiceRecord
а также listenUsingInsecureRfcommWithServiceRecord
,
После тестирования мне удалось отправить сообщение между двумя непарными устройствами.
Надеюсь, это поможет.