Разница в скорости сканирования в Android и iOS - PullRequest
1 голос
/ 09 июня 2019

Моя проблема в том, что iOS и различные телефоны Android получают номер рекламного пакета BLE от определенного ibeacon, например. За 5 минут от определенного маяка iOS получает около 904 рекламных пакетов, а телефоны Android получают от 230 до 480 в зависимости от телефона. .

Кто-нибудь знает, есть ли настройка, которая может устанавливать скорость сканирования модуля BLE? Если нет, то что еще может вызвать эту проблему?

Я использую «CBCentralManager» для использования модуля BLE в iOS и «blutoothLeScanner» в Android.

//Creating an instance of CBCentralManager
private let bluetoothManager = CBCentralManager(delegate: nil, queue: nil)

//Start Scanning
bluetoothManager.scanForPeripherals(withServices: nil, options: [CBCentralManagerScanOptionAllowDuplicatesKey:NSNumber(value: true)])

Ответы [ 3 ]

1 голос
/ 09 июня 2019

Параметры сканирования жестко заданы в обеих ОС, но в Android вы можете выбрать один из следующих трех режимов:

  1. https://developer.android.com/reference/android/bluetooth/le/ScanSettings.html#SCAN_MODE_BALANCED
  2. https://developer.android.com/reference/android/bluetooth/le/ScanSettings.html#SCAN_MODE_LOW_LATENCY
  3. https://developer.android.com/reference/android/bluetooth/le/ScanSettings.html#SCAN_MODE_LOW_POWER

Обратите внимание, что если вы сканируете в фоновом режиме, SCAN_MODE_LOW_POWER будет использоваться независимо от того, что вы выбрали.

0 голосов
/ 12 июня 2019

Я знаю такое же поведение на некоторых телефонах.

Обратите внимание, что ваше периферийное устройство, вероятно, делает рекламу на 3 каналах BLE.(?) Возможно, ваше устройство Android прослушивает только один канал.

Кроме того, а в некоторых случаях даже хуже, возможно, что ваши телефоны прослушивают один канал за раз и другой канал через некоторое время, таким образом, также выполняется переключение каналов для сканирования.Вполне возможно, что вы получаете эффекты алиасинга и видите рекламу всего несколько раз.Вот почему Apple Accessory Guide рекомендует определенные рекламные интервалы периферийных устройств.(глава 23,5)

0 голосов
/ 12 июня 2019

Существует большое количество различий между моделями устройств Android (часто называемых фрагментацией), и это относится к поведению Bluetooth LE так же, как и все остальное.Различия между телефонами Android - более вероятное объяснение расхождений, которые вы видите, чем частота сканирования, которая по умолчанию равна 100% -ному рабочему циклу (LOW LATENCY) на всех устройствах Android, которые я видел, и похожа на iOS.

При тех же условиях некоторые устройства Android сканируют одинаковое количество рекламных объявлений BLE на iPhone (например, устройства Pixel и более поздние версии Nexus 5+). Но не все устройства Android дают столь же хорошие результаты.

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

  1. Некоторые старые устройства Android, такие как Nexus 4, Nexus 7 иМото G (1-го поколения) будет обнаруживать только по рекламе на скан для каждого уникального устройства Bluetooth.Перезапуск сканирования был необходим для обнаружения второго пакета с этого устройства.Вы можете попробовать перезапустить сканирование BLE каждую секунду или около того, чтобы увидеть, помогает ли это.

  2. Некоторые устройства Android, такие как Huawei P9, имеют очень плохо работающие антенны BLE, поэтому они редко могут обнаружитьУстройства BLE на расстоянии более 10 метров, тогда как iPhone обычно обнаруживают на расстоянии 40-50 метров и более.Вы можете увидеть, является ли это причиной вашей проблемы, посмотрев на уровень сигнала (значение RSSI) для полученных пакетов.Значения RSSI постоянно слабее (более отрицательные) на устройствах Android и iOS?Если так, то это объясняет расхождение.

...