正如标题所说,我正在尝试从不同服务中获取有关特征的通知。
但是,似乎只有来自被发现的第一个服务的特征的通知有效。
我是 BLE 和这个库的新手,所以也许我在这里做错了什么,但基本上这就是我正在做的:
阅读该值后,我设置了我感兴趣的特征 UUID 的通知,如此处 https://github.com/Polidea/RxAndroidBle#change-notifications
图书馆自述文件中所述我创建了一个方法来设置如下所示的通知:
public void setUpNotification(@NonNull String descriptorString, @NonNull UUID characteristicUUID) {
Disposable notificationDisposable = rxBleConnection.setupNotification(characteristicUUID)
.doOnNext(notificationObservable -> {
Log.v(TAG, "setUpNotification # " + descriptorString + ", " + characteristicUUID);
})
.flatMap(notificationObservable -> notificationObservable)
.subscribe(
bytes -> {
Log.v(TAG, "setUpNotification # " + descriptorString + "=" + Arrays.toString(bytes));
handleNotification(descriptorString, bytes);
},
throwable -> {
Log.e(TAG, "setUpNotification # " + descriptorString + ", Error: " + Exceptions.toString(throwable));
}
);
disposables.add(notificationDisposable);
}
我可以在日志中看到为所有需要的特性设置了通知,但我只收到来自循环的第一个服务的特性通知。如果我跳过为第一个服务设置的通知,我只会收到来自第二个服务的通知,而不会收到第三个服务的通知。我必须从所有 3 个服务中获取有关特征的通知,但到目前为止我无法使其正常工作。
我做了一些研究,但找不到任何示例说明如何订阅来自不同服务的特征的通知,因此我们将不胜感激!