使用CALLBACK_TYPE_ALL_MATCHES
参数时找不到我的设备,但是当我用CALLBACK_TYPE_FIRST_MATCH
更改此参数时,结果是预期的。
不幸的是,CALLBACK_TYPE_FIRST_MATCH
不能在多部电话上使用。
scanDisposable = rxBleClient.scanBleDevices(
ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES)
.build(),
ScanFilter.Builder()
.setServiceUuid(ParcelUuid(UUID_SERVICE))
.build()
)
?.observeOn(AndroidSchedulers.mainThread())
?.doOnDispose { }
?.subscribe(Consumer { scanResult ->
Log.d("Scan Result", scanResult.bleDevice.name + " - " + scanResult.bleDevice.macAddress)
},
Consumer<Throwable> { onScanFailure(it) })
Android Pixel可以通过CALLBACK_TYPE_FIRST_MATCH
查找设备,但是不能通过CALLBACK_TYPE_ALL_MATCHES
查找设备。
Galaxy S5 Neo可以使用CALLBACK_TYPE_ALL_MATCHES
查找设备,并且CALLBACK_TYPE_FIRST_MATCH
发送BleScanException.SCAN_FAILED_OUT_OF_HARDWARE_RESOURCES
。