bluetooth - 蓝牙配置文件如何工作?

标签 bluetooth

我了解蓝牙配置文件包含其他配置文件和协议(protocol)。我不明白蓝牙设备之间究竟是如何交互的。例如,如果您使用任何实现 A2DP 配置文件的附件并将其连接到 iPad,那么 iPad 会将所有音频输出流式传输到它。这让我相信配置文件只不过是定义明确的生态系统中的模块化组件。例如,网络浏览器可以使用您在工具栏中选择的任何一种搜索引擎;我是否正确地说 iPad 相当于浏览器而 A2DP 附件相当于搜索引擎?我说 A2DP 的使用完全取决于与之配对的设备是否也是正确的?也就是说,苹果本可以选择(尽管不明智)让 iPad 只输出按键和铃声,对吗?因此,A2DP 配置文件中没有任何内容表明“所有使用 A2DP 配置文件的设备都必须向其输出所有音频”,对吗?

最佳答案

我对整个蓝牙并不是 100% 熟悉。我一直在为 BT Low-Energy 起草一份配置文件,因此有人可能能够提供有关标准蓝牙的更多详细信息。

但是,据我了解,配置文件本质上是连接引用的大型 map 。因此,A2DP 配置文件将有一个属性列表,或者更确切地说,是一个十六进制值列表,这些值指向较大配置文件中的属性。这些属性通常对所有配置文件普遍可用,但仅由需要它们的配置文件实现。这些属性定义了将要传输的一些信息。此配置文件需要在两个设备上进行通信,因为这允许蓝牙传输通过仅引用它正在传输的数据的众所周知的定义来更小(而不是像某些通信类型那样定义每次传输中的数据是什么)。

因此,对于 A2DP,传输可能非常简单,例如“0x1351458 0”,它会跟踪设备,无论该配置文件属性是什么,它的值都是 0。因此该属性可能是“播放”属性,因此设置为 0 可能会停止音乐。

同样,这就是我从低能耗的角度理解蓝牙配置文件的方式,它往往更多的是状态传输而不是实际数据,因此它可能与常规蓝牙有所不同。

关于bluetooth - 蓝牙配置文件如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14313473/

相关文章:

linux - 低功耗蓝牙 : Use BlueZ stack as a peripheral (with custom services and characteristics)

bluetooth - BlueGiga BLE 开发工具

bluetooth - 我们可以连接多少台设备到蓝牙5

iOS 和 CoreBluetooth 需要低功耗吗?

android - Android 中没有提示的蓝牙发现

ios - 当应用程序在后台时与 iOS 中的蓝牙经典设备通信?

python - 在树莓派上用蓝牙测量接近度

swift - CBCentralManager 在 iOS 11.1.x 上总是返回 .poweredOff 状态

android - 低功耗蓝牙加密和数据安全

java - 为什么在Toast.makeText().show()之前调用BluetoothSocket.connect()?