问题标签 [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 回答
1579 浏览

android - BLE 设备超时后,Android BLE 不再连接 [使用 RxAndroidBle]

我正在使用 RxAndroidBle 库开发 Android BLE。如果没有交互,BLE 设备的超时时间为 5 分钟。即如果5分钟没有读/写操作,设备将自动断开连接。发生超时断开连接时,我收到 BleGattException。

一旦设备因超时而断开连接,当我再次扫描时,我可以按预期在可用设备附近找到该设备。但是当我尝试连接到同一个设备时,它会抛出一个异常,告诉设备已经连接

但是,如果我在手机中关闭并打开蓝牙,或者我终止应用程序并重新启动,我就可以连接到设备。

当我手动断开设备并再次连接时,重新连接正在工作。问题仅在于发生超时断开连接时。

谁能告诉我为什么会这样?

0 投票
2 回答
1093 浏览

android - RxAndroidBle 多特征通知和读/写

我在设置多个特征的通知时遇到问题。我已经查看了文档,并且许多示例仅涵盖了非常精细的情况。

我的用例如下: 1. 扫描设备 2. 用户选择要连接的设备(连接一直持续到应用程序关闭) 3. 订阅许多特征的通知 4. 读取/写入任一单个特征时间,在某些情况下,一次读取/写入许多特征

0 投票
1 回答
105 浏览

android - 如何从多个通知中识别每个 BLE 设备?

我想将相同的命令写入多个设备并从每个设备接收通知。使用我当前的代码,我可以做到这一点,但我无法告诉每个通知对应的 MAC 地址,因为它们都共享相同的特性 UUID。

这是我的代码:

使用获取 MAC 地址bleDevice.getMacAddress()并不准确,因为与循环相比,响应通知要慢得多。我总是得到最后一个bleDevice循环。

希望有一些方法可以传递 MAC 地址。

谢谢你。

0 投票
1 回答
348 浏览

bluetooth-lowenergy - RxAndroidBle:读取预定义的 GATT 特性

我有一个具有多个特性的 BLE 设备,由此处定义的默认地址寻址

制造商名称字符串、硬件版本字符串、序列号字符串等。

使用 UUID 类,我尝试了几种不同的方法来构建 RxAndroidBle 将接受并从这些特征中读取的 UUID。

我最想工作的一个是:

但我只是回到 onError 回调。

RxBleConnection.readCharacteristic 仅接受 UUID 或使用 UUID 创建的 BluetoothGattCharacteristic ...

0 投票
2 回答
3545 浏览

android - 结合 timeout() 与 retryWhen()

我正在创建一个简单的应用程序,用于使用 RxAndroidBle 库连接蓝牙设备(干得好!)。我遇到的是有时当我连接到设备时收到状态为 133 的 Gatt 错误。我知道它可能会发生,所以我想做的是在发生该错误时重试所有操作。这不是问题,我可以通过操作员轻松做到这一点retryWhen(),但是我还有另一个要求 - 如果连接不成功,则流必须在 30 秒后终止。我曾经timeout()这样做过,但问题是当我重试时,计时器又开始了。

所以问题是如何将 timeout() 运算符与 retryWhen() 结合起来,这样我就可以重试一些特定的错误,但保持计数器继续运行。

我有一些组合可观察对象的想法,或者一些单独的可观察对象,它们将在超时后检查连接状态,但我想知道我是否可以在单个可观察对象中做到这一点。

到目前为止,我的代码如下所示:

0 投票
1 回答
845 浏览

android - 如何使用 RxAndroidBle 结合服务发现和读取特性

我是 Rx 编程的新手。我现在正在尝试使用RxAndroidBle来发现 BLE 设备的服务并从设备中读取一些特征。

我可以用

查找设备服务

并使用

读通缉特征

但我想知道是否可以将这两个任务结合在一起?如果可能的话,我该怎么做?

非常感谢您的提示和帮助!

0 投票
5 回答
1626 浏览

android - BLE 设备在收到通知后断开连接(BLEGattException 状态 = 0x8)

我的 BLE 服务器永久测量传感器值,并在每次测量后发送包含 20 字节用户数据的通知。目标是产生尽可能多的吞吐量。

在客户端,接收并处理服务器发送的值。

如果我将连接间隔设置为 11.25 毫秒,我会收到所有值。但是,如果我将连接间隔设置为 30ms,我会收到一些值然后关闭连接。

在 Android 日志中,我看到以下消息:

BleGattException 状态=8 (0x8),bleGattOperationType=BleGattOperation{description='CONNECTION_STATE'

为什么连接中断,触发器是什么?

在 BLE 嗅探器的帮助下,这是无法识别的。接受设置的连接参数并开始传输。突然传输结束并出现错误消息。

更新: 已添加 BLE 嗅探器屏幕截图: 在此处输入图像描述

0 投票
1 回答
141 浏览

android - 发现另一个 BLE 设备时 RxAndroidBle 停止

我正在使用 RxAndroidBle 来发现周围设备的服务和一些特性。我遇到了一个问题,在取消订阅与第一台设备的连接后,与另一台设备建立连接不起作用。当涉及到另一个设备时,状态总是“连接状态:RxBleConnectionState{DISCONNECTED}”。

这是代码,谁能帮我检查一下!

感谢@s-noopy,在取消订阅到 onNext() 的末尾后,RxBle 的日志是:

0 投票
1 回答
963 浏览

android - BLE 通知订阅获得 133

1 部 Android 手机 (N5X 6.0.1) 正在运行 BLE 服务器,另一部 (N5X O) 正在订阅。可以启用特征通知,但是在写入描述符部分,我一直得到 133。

Server.java

所有其他 UUID 都是从这里创建的。

Client.java

logcat

注意:如果我使用的是原生 Android API,我可以订阅和接收通知,而无需写入描述符。

更新:有趣的是,虽然写描述符过程正在发生(大约需要 30 秒才能返回错误),但我能够接收onCharacteristicChanged.

update2:添加回调并写入特征代码

0 投票
1 回答
826 浏览

bluetooth - Android BLE 回调 OnWriteCallback 几秒钟后停止

我正在尝试根据 OnCharacteristicWrite 回调条件同步写入下一个数据包以实现最大吞吐量。但由于某种原因,它会在 1-2 秒后的初始阶段停止触发 OnCharacteristicWrite 回调,即使我重新发送数据包,它也不会被调用。如果我添加每个数据包的延迟效果很好,但我不想添加任何延迟来实现最大吞吐量。

有什么方法可以在不增加任何延迟的情况下实现最大吞吐量?

另外,每个连接间隔发送多个数据包到底意味着什么(有什么方法可以通过外围设备实现)?