1

我有一个带有 android 的工作 ble 设备。它通过Android应用程序很好地发送和接收数据。但现在我的问题是我想将一些音频 HEX 文件发送到我的 BLE 设备。并且它大于 20 个字节。我怎样才能将这样的数据发送到 BLE 设备。??

4

3 回答 3

4

发送超过 20 字节的数据,需要更改 MTU-exchange。

对于 API LEVEL 21,您可以使用requestMtu ( Android Developer ),它与外围设备协商,您可以定义直到 512 字节。

MTU 值在外设端定义。请记住,您可以发送的数据大小是 MTU-3 字节。

对于小于 21 的 API LEVEL,MTU 是预定义的,您无法修改。

于 2015-08-07T18:29:51.950 回答
2

大小限制可以不同于 20,我认为 MTU 大小是可以协商的,因此您永远不应该对大小进行任何硬编码。

为了让它正确,首先在 onCharacteristicReadRequest 中,您只需检查偏移量并将该点的所有数据提供给响应。

然后在 onDescriptorWriteRequest 中,如果preparedWrite 设置为true,则需要存储获得的值,并在调用onExecuteWrite() 后将它们组合起来。

示例实现在:https ://github.com/DrJukka/BLETestStuff/blob/master/MyBLETest/app/src/main/java/org/thaliproject/p2p/mybletest/BLEAdvertiserLollipop.java

于 2015-07-14T12:31:49.987 回答
0

您可以继续的一种方法是将音频十六进制拆分为小块数据。您可以使用串行端口配置文件发送这些数据块。一旦收到所有数据,您就可以使用一些合并算法(谷歌它)和稍后将其恢复为音频十六进制文件。

于 2015-07-15T07:04:38.700 回答