Я хочу, чтобы мое приложение непрерывно сканировало до 3 различных периферийных устройств BLE (идентифицируемых по MAC-адресу). Когда одно устройство найдено, я прекращаю его поиск и подключаюсь к нему. Код:
static Observable<ScanResult> bleSharedScanner = MyApplication
.getRxBleClient()
.scanBleDevices(new ScanSettings.Builder()
.setScanMode(SCAN_MODE)
.build())
.share();
static Observable<ScanResult> device1Scanner = bleSharedScanner
.filter(scanResult -> scanResult.getBleDevice().getMacAddress().equalsIgnoreCase( device1MacAddress )
);
Код для Device2 и Device3 одинаков. Изначально я подписываюсь на все 3 этих сканера устройств; когда я нахожу одно из устройств, я unsubscribe
подписываюсь на него, а поиск двух других продолжается.
Пока это работает на моем тестовом телефоне Android. Но я заметил ваш ответ на предыдущий вопрос: "… остановите scanSubscription, прежде чем пытаться подключиться— Android иногда плохо справляется со сканированием и подключением одновременно».
Это общая проблема? Есть ли хороший обходной путь? Мне нужно продолжить поиск других устройств, взаимодействуя с найденным.