如何将音频 HEX 文件发送到 Ble 设备

How to Send an Audio HEX file to Ble Device

我有一个可以使用 android 的蓝牙设备。 它通过 Android 应用程序精细地发送和接收数据。 但现在我的问题是我想将一些音频 HEX 文件发送到我的 BLE 设备。 它大于 20 个字节。 我怎样才能将这样的数据发送到 BLE 设备。 ??

大小限制可以不同于 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

您可以继续的一种方法是将音频十六进制分成小块数据。您可以使用串行端口配置文件发送这些数据块。收到所有数据后,您可以使用一些合并算法组合和存储(google 它),然后将其还原为音频十六进制文件。

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

到APILEVEL 21,可以使用requestMtu(Android Developer),它与外围设备协商,可以定义到512字节。

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

对于API小于21的LEVEL,MTU是预定义的,不能修改。