Есть ли способ сканирования устройств BLE, которые не используют обратные вызовы? - PullRequest
0 голосов
/ 24 мая 2018

Я разрабатываю приложение на Android, которое сканирует устройства Bluetooth Low Energy поблизости, используя только API Android.Есть какие-нибудь функции, которые сканируют и возвращают список всех обнаруженных устройств?В настоящее время я использую обратные вызовы, но мне нужно вызывать эту функцию чаще раз в секунду, поэтому обратный вызов не подходит.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Нет, сканирование Bluetooth LE, естественно, является асинхронным процессом, требующим обратных вызовов.Кроме того, вызов для сканирования больше раз в секунду не увеличит ваши шансы на получение большего количества результатов.Процесс сканирования Bluetooth LE выполняется непрерывно и возвращает все возможные результаты.

0 голосов
/ 25 мая 2018

Нет, я не думаю, что это возможно без использования функций обратного вызова, насколько я знаю.

Обратные вызовы являются важной частью процесса сканирования.

Это код для созданияобратный вызов

private ScanCallback leScanCallback = new ScanCallback() {
        @Override
        public void onScanResult(int callbackType, ScanResult result) {
          //code for what you want to do when a device is found
        }
    };

ScanResult - это структура данных, которая содержит информацию об устройстве и служебные данные, которые имеются, если таковые имеются.

Это начало сканирования

AsyncTask.execute(new Runnable() {
            @Override
            public void run() {
                btScanner.startScan(leScanCallback);
            }
        });

Это остановить сканирование

AsyncTask.execute(new Runnable() {
            @Override
            public void run() {
                btScanner.stopScan(leScanCallback);
            }
        });
...