RxAndroidBle - разные результаты при использовании CALLBACK_TYPE_ALL_MATCHES или CALLBACK_TYPE_FIRST_MATCH

Я не могу найти свое устройство при использовании параметра 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.

Судя по тому, что вы пишете, возможно, вы могли бы решить свою проблему, используя оба варианта (конечно, вам нужно запустить два отдельных сканирования). В настоящее время я разрабатываю приложение для Bluetooth, и я сталкиваюсь с такой же проблемой, как и вы. Sony xperia полностью игнорирует рекламу, когда установлено значение CALLBACK_TYPE_ALL_MATCHES, и делает это даже без использования RxAndroidBle, поэтому я предполагаю, что проблема не в библиотеке RxAndroidBle.

Zdeněk Balák 12.07.2018 09:37

Спасибо, это очень помогает.

Lionel Cremer 19.07.2018 11:16

Вы нашли что-нибудь, что могло бы решить проблему отсутствия результатов с настройками CALLBACK_TYPE_ALL_MATCHES? Я пытаюсь решить эту проблему на прошлой неделе, пока не повезло.

Zdeněk Balák 19.07.2018 11:25

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

Lionel Cremer 20.07.2018 16:21
0
4
174
0

Другие вопросы по теме