내 응용 프로그램이 최대 3 개의 다른 BLE 주변 장치 (MAC 주소로 식별 됨)를 지속적으로 검색하도록합니다. 하나의 장치가 발견되면 그 장치를 검색하지 않고 연결합니다. 코드 : 1 디바이스 및 장치 3에 대한하나에 연결하는 동안 다른 BLE 장치를 계속 검색합니다.
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)
);
코드는 동일합니다. 처음에는이 3 가지 장치 스캐너를 모두 구독합니다. 장치 중 하나를 찾을 때 unsubscribe
그 구독 - 그 사이에 다른 두 스캔 계속됩니다.
지금까지 테스트 Android 휴대 전화에서 작동하는 것으로 보입니다. 그러나 a previous question에 대한 귀하의 답변 : "... 접속하기 전에 scanSubscription을 중지하십시오. - 때때로 Android가 스캔 및 연결을 동시에 처리하지 못합니다."
일반적인 문제입니까? 좋은 해결 방법이 있습니까? 발견 된 장치와 상호 작용하면서 다른 장치를 계속 스캐닝해야합니다.