Android Ble Server - разрешить подключение только ранее подключенного устройства

У меня есть клиент BLE для Android и сервер BLE для Android.

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

Как этого добиться?

Что я рассмотрел до сих пор:

1. Свяжите устройства через настройки Bluetooth в Android

Можно ли разрешить подключаться к серверу только подключенным устройствам? Если да, то как?

2. Какой-то белый список

  • Mac-адрес (проблематично, поскольку MAC-адреса не статичны)
  • имя устройства
  • IRK

Можно ли реализовать такой белый список? Если да, то как?

3. Рекламировать только при первом подключении

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


person heslegend    schedule 26.08.2020    source источник


Ответы (1)


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

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

person Thomas Morris    schedule 26.08.2020
comment
Проблема с вашим решением заключается в том, что я хочу, чтобы сервер решал, каким устройствам разрешено подключаться (только известные устройства). Сканирование изображения выполняется клиентом. - person heslegend; 26.08.2020
comment
Итак, вы хотите, чтобы устройство, которое транслирует, хочет установить соединение, чтобы определить, должны ли устройства подключаться? - person Thomas Morris; 26.08.2020
comment
да. Рассмотрим два клиентских устройства и одно серверное устройство в одной комнате. Одно клиентское устройство уже было подключено к серверу раньше, другое - нет. Если теперь оба клиента попытаются подключиться к серверу, сервер должен разрешить подключение только ранее подключенному устройству. - person heslegend; 26.08.2020
comment
Итак, вы хотите, чтобы рекламное устройство позволяло устройству подключаться только в том случае, если оно соответствует критериям первоначального сканирования или соответствия ранее? - person Thomas Morris; 26.08.2020
comment
Да, и если два устройства хотят подключиться (одно ранее подключалось, другое нет), только ранее подключенное устройство должно иметь разрешение на подключение. Моя идея заключалась в том, чтобы иметь начальный процесс подключения (например, первоначальное подключение, только если пользователь нажимает кнопку подключения). С этого момента пользователю больше не нужно предпринимать никаких действий, а рекламное устройство должно разрешать подключаться только ранее подключенным устройствам до тех пор, пока кнопка подключения не будет нажата снова. - person heslegend; 26.08.2020