问题标签 [rxandroidble]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Rxandroidble-scanBleDevices(UUID...filters) 方法不支持两种类型的服务
我遇到了一个问题,即 scanBleDevices(UUID...filters) 方法无法支持发现具有不同 UUIDServices 的双重设备。
我猜 args 之间的关系是 AND,但不是 OR。但是我怎样才能得到具有不同 UUIDService 的双重设备呢?
那里的代码是我想发现带有 uuid 的设备00001801-0000-1000-8000-00805F9B34FB
和另一个带有 uuid的设备6E400001-B5A3-F393-E0A9-E50E24DCCA9E
,但我总是无法通过代码获得结果。那么,我该如何解决这个问题呢?
android - 如何使用 rxandroidble 禁用通知?
我目前正在尝试使用 rxandroidble 来替换我们其中一款应用的 Android 原生 BLE API。
如何禁用通知?我可以使用示例代码启用它,这个:
但是在我的产品中,我有一个用例,我必须按需禁用/启用通知。
另外,我尝试直接取消订阅/重新连接而不是禁用/启用通知,但取消订阅命令显然从未执行,我的假设是因为我的吞吐量很高(我的设备以 300 - 400Hz 通知),这是否合理?
(我知道 BLE 不是最适合高吞吐量的技术,但它在这里用于研发目的 :))
谢谢你的帮助!
java - 持续订阅和取消订阅 Observable 以进行 BLE 扫描
我想实现一个功能,其中 BLE 扫描被激活 10 秒,然后中断 10 秒,并在视图处于活动状态时重复。
我正在使用RxAndroidBle
它包装 Android BLE API 以实现反应性。我有一个方法scanForRange(getConnectAddress());
,它使用一个Observable<RxBleScanResult>
和一些过滤器和一个映射来返回一个简单的Observable<Integer>
. 要开始扫描,必须简单地订阅这个 observable,然后取消订阅以停止扫描。
我的第一个想法是使用Observable.interval()
如下所示:
然后我会在我的onPause()
. 现在这不起作用,因为一旦发出第一个间隔,就会订阅扫描并将连续发出结果(而不是每 10 秒开始/停止)。
那么实现此功能的最佳方法是什么?我想我可能可以混合使用 Observables 和 Handlers 来破解它,但这似乎是错误的。
android - Emit an item one at a time, interact with it until a condition is met, then continue for next item
I have a list of BLE devices, and am using RxJava to interact with them. I need to emit an item from the list, write a characteristic to it repeatedly until X happens, and then proceed to the next item in the list.
Current code:
where .connectForPolicing()
looks like:
This code seems to immediately emit all the items in the list, and therefore will connect and buzz all items at the same time. How can I emit items one at a time so that I may interact with them?
The pseudocode would be something like:
bluetooth-lowenergy - Android BLE iBeacon 广告包大于预期
考虑到设备的 RSSI 和校准的传输功率,我正在尝试获得 BLE 设备的估计范围。
校准的 txPower 应该作为外围 iBeacon 广告包中的最后一个字节发出。根据我找到的文档,这些数据包的长度应为 30 个字节。
但是,返回byte[]
的数据包长度为 62 字节。因此,广告数据的格式是未知的。
为什么会发生这种情况,有没有办法破译 62 字节数据包的格式?
android - OnErrorNotImplementedException 仍然以包含错误处理的方式被调用
我正在执行对 BLE 特性的写入,其中对于这些特定设备,如果外围设备仍处于锁定状态,则某些特性是不可写入的。
如果在设备仍处于锁定状态时调用它,我只想提供一个视觉通知,而不是抛出异常。
这是代码的第一部分,它来自我为此应用程序编写的自定义库:
这是使用前一个的方法:
这以前只是一个Action1
,但我改为aSubscriber
以清楚地显示onError()
已实施。
我添加了一堆额外的运算符 ( onErrorReturn()
, onErrorResumeNext()
) 以防止出现异常。
为什么异常仍然通过?
编辑:堆栈跟踪:
android - rxandroidble:BLE设备长时间断开连接:应用程序进入睡眠状态
我正在使用 rxandroidble 使用 autoconnect = true 来持续监控来自传感器的数据。该应用程序会不断扫描它之前连接的传感器。
即使手机没有连接电源,传感器的数据监控和扫描也应该持续一整夜。
如果传感器在晚上连接,应用程序将保持连接一整夜,即使它暂时断开连接。
但是,如果传感器在夜间断开 6 小时(因为我拔掉了传感器的电池),然后在早上重新连接传感器电池,手机似乎不会重新连接到传感器。
我每 8 秒不断扫描 Android 服务中的新传感器,但它不是 WakefulService,也不是由 WakefulIntent 启动的。应该是吗?
知道会发生什么吗?rxandroidble 是否设计为在这种情况下继续扫描传感器(ble 设备连接,超出范围 8 小时,然后回到范围内)?或者我是否需要在断开连接后手动尝试重新连接,然后 rxandroid 会不断尝试重新连接。
这是我的扫描码:
这是我的连接代码:
如果连接状态变为断开连接,我不会尝试手动重新连接;扫描或自动连接应该解决这个问题吧?
我已经在安卓电池设置中关闭了应用程序的“应用程序优化”,也就是打盹模式,但我不知道这是否有任何作用。
编辑1:这是我的日志......我们第一次连接正常,然后我们尝试连接,然后我们立即断开连接:
谢谢!
第二次编辑:
消费代码
private void RxBleOnConnectionReceived(RxBleDeviceServices services) { // 发现服务
rx-java - Rewriting connection method to utilize Rx
I'm rewriting a method in a library to utilize Rx. The below code example is the original method.
#xA;My first go was to return a Subscription
instead of saving it to mEstablishedConnection
. This would allow the user to unsubscribe to trigger a disconnect:
The issue with the above is that I can not properly propagate errors back to the caller, which would be nice to do. How can I rewrite this method to make it reactive, letting the caller receive errors, and not just return an RxBleConnection
, which is a 3rd party class?
android - 使用 RxAndroidBle,我如何订阅响应写入特性?
我要连接的 BLE 设备在其 GATT 特性之一上发出字节,以响应对该特性的写入。客户端应该启用有关该特征的通知,并解释该特征的更改字节。(我正在控制的行为是打开附近无线网络的扫描服务,然后监听服务输出。)
我正在使用 RxAndroidBle 并遵循示例。我有一个活动连接 Observable。我要观察的特征有一个名为AP_SCAN_DATA
. 它应该0xFE
响应接收到书面的0xFF
.
如何调用setupNotification
并在其上设置 Observer 以捕获发出byte[]
的 s,然后将值写入特征,以便我可以捕获响应?
到目前为止我最大的努力:
rx-java - 在不使用传统监听器的情况下通知错误事件
我有一个相当复杂的 Rx 代码链,用于执行许多操作。本质上,当启动时,Observable 开始发出项目列表。对于每个项目,都会建立一个连接(这些项目是 BLE 设备)并写入一个特性。
此特性每 10 秒重写一次,直到发生错误(例如拔出电池)。之后,原始列表中的下一个项目被连接到,依此类推。
这是大多数动作发生的地方:
这里有几个问题。可以看到,一个传统的监听器传入这个方法,这个监听器在onErrorResumeNext
. 此侦听器用于从 Activity 中的 RecyclerView 中删除项目,但这并不重要。问题是,以这种方式使用监听器有点像 Rx 的反模式。以下是其余相关代码,包括调用上述示例的代码:
包括监听器的实现。问题是,我怎样才能执行与听众使用 Rx 所做的等效的操作?