问题标签 [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.

0 投票
1 回答
511 浏览

rx-android - RxAndroidBle scanBleDevices(UUID ...)未触发

我在传递一个(有效的)UUID 时使用 scanBleDevices 方法时遇到问题 - 订阅永远不会触发。目前我有一个使用扫描、连接、读/写的常用 android 方法的工作原型,但我想更新我的 RxAndroidBle 语法以使事情更安全、更易于阅读。

这是我的 RxAndroidBle 实现 -不工作/订阅永远不会触发:

在此处输入图像描述

您可能会认为我的 UUID 是错误的,但这是我使用非常有状态的先前版本所做的一些替代实现 -相同的 uuid,这有效:

在此处输入图像描述

mLeScanCallback 将被触发。

我正在使用 RxAndroidBle 版本 1.2.2 并且我的手机是 Nexus 6P android 版本 6.0.1

一些附加信息:如果我使用 scanBleDevices(),没有参数,我可以通过检查制造数据中的某些内容来找到我想要的 rxBleScanResult,无论如何我都会这样做。但为了安全起见,我也想过滤 UUID。当我找到我想要的包 bytes[] 时,我尝试使用 (deprecated) 提取我的 UUID new UUIDUtil().extractUUIDs(rxBleScanResult.getScanRecord()),但这返回了一个空列表。只是为了进一步确定,当我使用老式的 mLeScanCallback 时,上面的 extractUUIDS 也会导致一个空列表。

谢谢你的时间!

0 投票
1 回答
3049 浏览

android - android - 在活动之间保持蓝牙连接?

假设我有 2 个活动Activity AActivity B

我显示Activity A用户可以连接的设备列表。当用户单击其中一个设备时,它将连接到选定的蓝牙设备并首先交换一些数据以验证凭据(即登录)。我已经完成了这部分。

当数据正确时,我想移动到Activity B所有主菜单所在的位置,但我想保持之前建立的连接,Activity A这样我就不需要断开连接并再次重新连接。

怎么做 ?我是新手,请帮助我..

我使用这个库进行连接: https ://github.com/Polidea/RxAndroidBle

谢谢之前:)

0 投票
1 回答
65 浏览

rx-java - 为什么先调用方法发现后会自动断开

我是 RxJava 的新手,当我阅读 rxandroidble 库的演示时,我想知道为什么第一个可以断开 ble。

0 投票
0 回答
437 浏览

android - 读取 Ble 特征时 BleGattCharacteristicException 状态 0x06

我正在使用 RxAndroidBle 库与蓝牙设备进行通信,但是最近我遇到了一个奇怪的问题。读取设备特性之一时,我收到这样的错误:

我看到描述表明特征读取有问题,但我能够使用一些商业扫描仪或谷歌样本中的香草蓝牙代码在同一设备上读取它。我检查了特征属性 - 它有 PROPERTY_READ。

在使用 RxAndroidBle 的 Polidea 示例时,我遇到了同样的错误。

在互联网上的任何地方都找不到类似的案例,也许有人遇到了这样的错误。附加信息可能是我连接的设备是在 iPhone 上运行的 ble 设备模拟器。我没有提供任何片段,因为我使用的是核心示例中的相同代码。

完整的详细日志:

来自 Google 蓝牙示例应用程序的详细日志,我可以在其中读取该属性

确实存在差异,因为此应用程序在读取值之前设置通知。负责此操作的应用程序中的代码如下所示:

至于 RxAndroidBle 版本,我在 1.2.0、1.2.4 和 1.3.0 上测试过。Android 版本 7.1、6.0.1 和 5.1。

将尝试在读取特征之前实现此通知,因为这是我能看到的唯一区别。

0 投票
1 回答
454 浏览

rx-java - 为什么它不能应用 flatmap 并订阅同一个 RxBleConnection observable 两次?

如题,

为简单起见,如果我想使用不同的UUID 执行两次读取操作:

(我知道 RxAndroidBle 提供了多次读取功能)

为什么第二个 subscribe() 得到 BleAlreadyConnectedException ?

==========更新==========

我找到了解决方案,如果我修改

device.establishConnection(false) ==> device.establishConnection(false).compose(new ConnectionSharingAdapter())

ConnectionSharingAdapter 会做这样的事情:

sourceObservable.replay(1).refCount();

保持 source observable 发出的最后一个

0 投票
1 回答
714 浏览

android - 在 RxJava 中使用多个 .subscribe() 语句

我的 BLE 外围设备的 Android 应用程序写入 2 个不同的设备特征并接收来自其他 2 个的通知。该RxAndroidBle库的开发人员告诫不要在同一个RxBleConnection实例上进行多个订阅,但我看不到任何将所有这些 I/O 操作组合成一个的现实方法.subscribe(),特别是因为其中一个通知是一个相当恒定的数据“消防软管”。

不知道更好,我只是将 存储RxBleConnection在一个变量中并在多个.subscribe()s 中使用它。据我所知,这一切正常。我已经调查了RxAndroidBle图书馆ConnectionSharingAdapter,但是,虽然我已经分析了代码,但我不明白它比我的简单方法有什么好处(尽管我很想知道)。

一般来说,详细说明多个.subscribe()s 如何引入状态以及潜在的陷阱会有所帮助。问题:

  1. 存储RxBleConnection在变量中并将其用于多个.subscribe()s 有什么问题?
  2. 如果这是一个问题,如何ConnectionSharingAdapter解决?
  3. 说多个订阅“引入状态”是什么意思,这怎么会导致问题?
  4. 是否有任何干净的方法将所有四个特征 I/O 操作组合成一个.subscribe()(不会降低性能)?
0 投票
3 回答
1753 浏览

android - Android BLE connects in background after disconnect

We are using RxAndroidBle 1.3.1 to connect to BLE devices from Android. On certain phones (currently I'm seeing this on an LG V20 [LG-H918], Android 7.0), after our app disconnects, the phone will continue to connect without any user input.

When we close our app, the device disconnects. Then we can kill our app process. Twenty seconds or so later, the phone reconnects to the device for about 2 seconds then disconnects. This behavior repeats every 10-20 seconds indefinitely, until we reboot the phone.

Actually, we even get the recurring connections if we hard-kill the app while the connection still exists.

These are the logs when we disconnect:

I am baffled; any help is appreciated!

0 投票
0 回答
668 浏览

android - RxAndroidBle BleAlreadyConnectedException

我正在尝试建立一个连接,如果连接一旦丢失,它将再次自动连接。再次建立连接时开始调试。

所以第一个连接很完美,我可以从 rxBleConnection 设置通知。但是当我关闭我的 ble 板时,我得到了 BleAlreadyConnectedException,除非我再次关闭应用程序,否则我无法连接。

和通知

所以第一个连接工作得很好。但是在我的电路板重新启动后,connectionObservable 给了我错误 BleAlreadyConnectedException status 8

我希望应用程序再次连接并再次为新连接设置通知。

0 投票
2 回答
268 浏览

rxandroidble - RxAndroidBle long write - 每批写入的回调

我正在做一个长写操作,一次发送 16 个字节的批次。我希望有一个进度条向用户显示长写入的进度,因此每次写入批处理时我都需要某种回调。

从文档来看,它看起来像setWriteOperationAckStrategy这样。但是,在运行以下代码时,我最终只看到一条消息输出到日志中。我在这里做错了什么?

0 投票
0 回答
253 浏览

android - 来自 RxAndroidBle 的错误消息

我有一个 Android 服务,它在被销毁时给我以下错误消息:

服务 io.aeroscope.aeroscope.AeroscopeBluetoothService 泄露了最初在这里注册的 IntentReceiver com.polidea.rxandroidble.RxBleAdapterStateObservable$1$1@3d91b742。您是否错过了对 unregisterReceiver() 的调用?在 android.app.LoadedApk$ReceiverDispatcher.(LoadedApk.java:944)

服务中唯一的订阅在onDestroy()方法中被取消订阅(完整显示):

此消息来自哪里,我该如何解决?(另外,.isUnsubscribed()需要测试吗?应该super.onDestroy()先来?)