2017-06-01 16 views
0

我在使用scanBleDevices方法傳遞一個(有效)UUID時遇到了問題 - 訂閱永遠不會觸發。目前我有一個使用通常的Android掃描,連接,讀/寫方法的工作原型,但我想更新RxAndroidBle的語法,使事情更安全,更易於閱讀。RxAndroidBle scanBleDevices(UUID ...)not firing

這裏是我的RxAndroidBle實現 - 不工作/訂閱從未火災:

enter image description here

你可能會想,我的UUID是錯的,但在這裏的是,我沒有用一個非常一些替代的實現有狀態的前一版本 - 相同的UUID,這個工程:

enter image description here

mLeScanCallback將被觸發。

我使用RxAndroidBle版本1.2.2 &我的手機是一臺Nexus 6P的Android 6.0.1版本

一些額外的信息: 如果我使用scanBleDevices(),沒有參數,我可以找到我想要的rxBleScanResult檢查製造數據中的某些內容,而我仍然會這樣做。但我想過濾UUID以確保安全。當我找到我想要的包字節[]時,我嘗試使用(不建議使用的) new UUIDUtil().extractUUIDs(rxBleScanResult.getScanRecord())來提取我的UUID,但是這返回了一個空列表。只是爲了更好地指出一些事情,當我使用老式的mLeScanCallback時,上面的extractUUIDS也會產生一個空列表。

謝謝你的時間!

回答

1

這實際上是RxAndroidBle庫中的一個錯誤。 正如人們在UUIDUtilhttps://github.com/Polidea/RxAndroidBle/commit/ee59e0ab9ae3c483f5c4f35c7729e9fc2068ee21#diff-c7944d4c01c56adf4e6c67c7f7f737e8)中看到的 - 它負責從藍牙廣告中提取服務UUID - 它缺少32位的UUID。該修補程序以剛剛發佈的版本1.2.3添加。

+0

This Works!謝謝s_noopy!我想知道你對RxAndroidBle的健康狀況的看法。他們修理東西的速度非常快 - 但是這可能不是生產準備?我喜歡這個圖書館。無論如何,我想我會繼續。 – Ethan

+0

因此,實際上,基於ScanPackage字節數組的過濾與scanBleDevices(UUID ...)方法上的過濾相同?好吧! – Ethan

+0

該庫已在多個不同項目中用於生產,如果您的外圍設備不更改服務並且未使用加密特徵 - 它已準備好使用 - 上述問題接近解決。我沒有收到ScanPackage部分。 –