问题标签 [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 - 如何让 Android Activity 等待异步进程完成
使用RxAndroidBle进行蓝牙 LE 连接。它可以扫描和识别具有给定服务 UUID 的设备(并将它们添加到向量中)。但是当我在 while 循环中添加一个自旋锁(实际上是一个AtomicBoolean
)来检测扫描何时完成时,它似乎不再找到设备。
我怀疑可能发生了几件事:
- 主 UI 线程已向前推进并试图显示已发现设备的空向量。如果是这种情况,我怎样才能让它等待设备扫描完成而不会使系统陷入困境?我认为 RxJava 平台消除了这个
AsyncTask
选项。 - 测试扫描完成的
while()
循环可能会消耗过多的 CPU 周期,从而阻止扫描成功。我怎样才能解决这个问题?
android - 有时不会在使用 RxAndroidBle 的 notify/write observable 中调用通知
我目前正在使用 RxAndroidBle 将固件写入蓝牙设备。它的工作方式我必须在一个 WRITE_CHARACTERISTIC_UUID 上将数据块(每块 580 字节)发送到蓝牙设备,然后在 LISTEN_CHARACTERISTIC_UUID 上收听结果,以检查蓝牙设备是否已成功确认该块。
理想情况下,我希望这个写入和通知链是一个操作,所以我使用来自类似堆栈溢出问题的代码(https://stackoverflow.com/a/41140523/734385):
问题是这仅在前几次有效,之后写入操作成功但我从未收到通知。这是停止前最后几个块的日志:
正如你在最后看到的那样,我没有得到
在最后。
注意:writeData 在 Scheduler.io() 线程中运行,我正在使用库中的最新主提交(https://github.com/Polidea/RxAndroidBle/commit/37ecef5c270c792bcb9193f6dd76b8711642e0ff)(因为我需要新的 LongWriteBuilder )
有趣的是,如果我启动一个额外的“虚拟”通知 observable,它什么都不做:
上述可观察的作品,我收到每一个通知。
我怀疑我在设置通知时做错了什么,或者我错过了某个地方的延迟。
rx-android - 序列化 RxAndroidBle 类的问题
我的应用程序尝试将使用 RxAndroidBle 类的相当复杂的对象从一个 Android 活动传递到另一个活动,方法是将其添加到 Intent 作为 Serializable extra。但是我遇到了崩溃,显然是由于这些类的序列化问题。
有什么解决办法吗?
android - 写入和通知特性上的 RxAndroidBle 错误
嗨,我正在服务中运行 RxAndroidBle。我将其设置为自动连接,因为设备每 5 分钟唤醒一次并尝试将数据发送到配对设备。我还设置了通知以获取数据。它可以工作,但每次断开连接时,我都会收到通知错误和写入错误。
android - 扫描自动停止:BluetoothAdapter: stopLeScan()
BluetoothManager 是一个负责与 ble 设备交互的类。
它作为单例注入 RxBleClient 并开始扫描片段/服务的启动方法。有时扫描会自动停止,有时几秒钟后我找不到原因。
问题是设备仍在广播它的包,但我的应用程序无法接收它,因为 BluetoothAdapter 已经停止了扫描。
以下是在服务中扫描的日志:
这是蓝牙管理器:
android - 如何使用 RxAndroidBLE 库利用 Android BLE 绑定功能?
我在 RxAndroidBLE 示例代码/描述中没有找到任何相关内容。在 vanilla Android BLE API 中,我可以轻松地使用 BluetoothDevice.createBond() 方法,但我完全不知道如何使用 RxAndroidBLE 来做同样的事情。
android - BxAndroidBle 无法读取设备,状态=22
我在读取 Ble 设备和使用 RxAndroidBle 库时遇到问题。
我不断收到此错误:
谁能看看我的代码,看看我可能做错了什么:
如果您需要更多信息,我会尽力提供。
编辑
我用过 2 部不同的手机: OnePlus 两部 Android 6.0.1 Moto G Play Android 6.0.1
我已经尝试过多次打开和关闭 wifi 和蓝牙。我从来没有读过这个例子。
android - 正确使用带有 RxAndroidBLE 的 createNewLongWriteBuilder
我有一个在虚拟串行端口上一次只能接受 20 个字节的设备(使用 BLE)。如果我没记错的话, createNewLongWriteBuilder 似乎是完美的方法。
这是我的尝试:
实际结果:设备没有收到任何数据,但日志显示:
D/RxBle#Radio: QUEUED RxBleRadioOperationCharacteristicLongWrite(107353908) D/RxBle#Radio: STARTED RxBleRadioOperationCharacteristicLongWrite(107353908) I/BLE 控制器:数据已写入!
D/RxBle#Radio:完成 RxBleRadioOperationCharacteristicLongWrite(107353908)
2017 年 3 月 30 日更新:
我最初的理解是不正确的,并且有很多问题。我发送的是订阅而不是 Observable。
s_noopy 指出:
WriteOperationAckStrategy 实际上是 ? Observable.repeatWhen() 运算符。过滤应该发生在 WOAS 内部,以便在准备好时触发重复。`
现在的情况:
我需要等待我的设备清除 TX 标志,然后才能发送下一批。为此,我需要实现setWriteOperationAckStrategy
,但我需要在发送下一批之前读取 TX 标志以查看它是否清晰。
我的尝试:
2017 年 7 月 30 日更新:
修改了 s_noopy 的代码,现在我有了:
现在的情况:
我试图从使用 rxBleConnection 转换为使用 connectionObservable。看起来好像第一批写入成功,但即使订阅函数两次都返回成功写入的字节数组,蓝牙设备也只能看到第一批
日志
2017 年 7 月 31 日更新:
更新以使以前的代码同步
不幸的是仍然无法正常工作,以下是相关日志:
android - 退订问题
我正在做一个应用程序,它使用 RxAndroidBle 作为呼吸机的遥控器。我有一个问题,unsubscribe
因为当我使用
之后我使用subscription.unsubscribe();
writeCharacteristics 不起作用,因为unsubscribe
总是首先运行,并且在发送数据之前连接断开。
我需要的是:
- 当我点击按钮时,我想连接到呼吸机
- 然后发送所有值
- 然后断开连接。
- 如果我重复这个过程,它需要一遍又一遍地做同样的事情。
有人可以帮我一些想法吗?我尝试使用.delay(1000, Time.MILISECONDS)
并且它有效,但是将信息发送到呼吸机需要很长时间。
这是我的代码:
android - RxAndroidBle WRITE_TYPE_DEFAULT 或 WRITE_TYPE_NO_RESPONSE
我想知道 RxAndroidBle 库在写确认方面使用哪种策略:WRITE_TYPE_DEFAULT或WRITE_TYPE_NO_RESPONSE?
此外,我是否希望设置(或查询)此设置,如何在 RxAndroidBle 中执行此操作?
我正在从 RxAndroidBle v1.1 -> v1.2 移植应用程序,所以我很好奇上述问题是否基于这些版本有任何差异。