ответ

1

От Android Official Site:

setReportDelay() принимает reportDelayMillis параметр где reportDelayMillis является:

Задержка отчета в миллисекундах. Устанавливается в 0 для получения уведомления о результатах немедленно. Значения> 0 вызывают результаты сканирования в очереди и доставлены после запрошенной задержки или когда внутренние буфера заполнения до

приходят на ваш вопрос:

Что цель setReportDelay для BluetoothLeScanner в Android? Я не могу себе представить, почему с задержкой получать отчеты ... |

Как я понял цель этого является то, что иногда при сканировании в течение очень короткого периода времени, не все devices/beacons могут быть найдены, а на втором сканировании другой может быть Cought во время сканирования.

Ex: Предположим, у вас есть три beacons и вы сделали два различных сканирования для 1s. При первом сканировании найден только один маяк, но и на других других маяках. Установка задержки будет queue все они, и вы сможете показать их все. В противном случае иногда одного маяка, иногда все из них, а иногда и два из них будут показаны. (Это связано главным образом с frequency они передают)

Вы можете использовать также Lists для этой цели, так что, когда beacon найден вы добавляете их до list и покажите их после некоторого delay (используя Handler/Timer). Но для этого потребуется больше работы. Таким образом, с этой функцией, вероятно, упрощается

0

Различные устройства сканируют несколько иначе. При сканировании некоторые возвращают одно и то же найденное устройство несколько раз за сканирование.

Если вы установили задержку, Android создаст очередь, и все дубликаты будут отфильтрованы до того, как будет возвращен этот список устройств в очереди.

0

setReportDelay()> 0 заставляет сканер останавливать результаты, а затем запускать onBatchScanResults() из ScanCallback, а не обычный onScanResult().

Это очень полезно, если вам нужно сделать обновление пользовательского интерфейса каждые несколько секунд: вместо того, чтобы обновлять пользовательский интерфейс каждый раз, когда приходит пакет объявлений, вы можете просто отложить результаты. Кроме того, вы получаете более полный набор результатов.

Обратите внимание, что ваше устройство должно поддерживать это. См.

http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html#isOffloadedScanBatchingSupported()

Смежные вопросы