Не уверен, что API позволит вам делать, но команда «Интерфейс хост-контроллера Bluetooth» (HCI), лежащая в основе этого, - «Команда запроса»
Это позволит вам запрашивать информацию об устройствах в течение фиксированного времени и / или фиксированного количества ответов.
Я новичок по Bluetooth, не эксперт, но ...
Чтобы получить хотя бы 1 ответ от устройства Bluetooth, находящегося в режиме низкого энергопотребления, требуется 1,28 секунды, поэтому время запроса умножается на этот период максимум до 61,44 секунды (48 периодов), поэтому диапазон времени составляет От 1 (1,28 секунды) до 48 (61,44 секунды).
Может быть несколько устройств, которые могли бы ответить в течение одного периода 1,28 секунды.
Вы также можете указать количество принятых ответов (1..255) или 0 для неограниченного времени, например. пока не истечет время.
Вы также можете отменить запрос, если вы нашли конкретное устройство, которое искали.
Ненаучный тест с моего компьютера с использованием Bluetooth-чипа CSR с прошивкой Bluetooth 2.1 + EDR, выполняющего запрос чипа с выходом отладки через чип UART. Провел каждый запрос 10 раз и получил среднее значение результатов:
- 1 период запроса (1,28 секунды)
получено в среднем 10 уникальных
блютуз адреса.
- 5 период запроса
время (6,4 секунды) дало среднее
из 23 уникальных адресов Bluetooth.
- 10
время запроса периода (12,8 секунд)
дал в среднем 29 уникальных
адреса Bluetooth.
Я говорю «уникальный», на самом деле результаты повторяют множество одних и тех же адресов снова и снова, хотя это может зависеть от реализации, и Apple API может возвращать только уникальные адреса.
Однако это не является представителем «реального мира», так как большинство устройств Bluetooth, находящихся здесь (мой офис), не находятся в режиме низкого энергопотребления. Я думаю, я мог бы отфильтровать ПК, ноутбуки и тестовый набор по классу устройств. Это позволило бы получить мобильные телефоны, гарнитуры, которые можно было обнаружить и т.д. ...
Запрос также может быть объединен с RSSI для получения устройств с самым сильным сигналом, но они не обязательно должны быть самыми близкими.
Для вашего сценария вы можете запросить информацию о времени и количестве устройств, например, 4 * 1,28 секунды или 10 устройств.
Подведем итог:
Самое короткое время, за которое вы можете сделать запрос, составляет 1,28 секунды, и это может получить 10 +/-? устройства в области, если они не спят и рядом.
Если у вас насыщенная среда Bluetooth или (микроволновая печь идет в той же комнате), может потребоваться больше времени, чтобы найти все устройства в пределах диапазона.