我正在我的嵌入式设备中将 Bluez 4.97 更新到 5.35。
对于 A2DP 连接,我们必须共享 SBC 编解码器功能。在理想情况下,功能将如图 1 所示。在 Bluez 4.97 代码中,我从AVDTP 层中的sbc_getcap_ind()函数获得 SBC 编解码器功能。在 sbc_getcap_ind() 中,sbc_codec_cap和avdtp_media_codec_capability都被初始化。所以这个功能包我可以发送回电话。
在5.35中,sbc_getcap_ind()函数不可用。avdtp_media_codec_capability在 AVDTP 层的endpoint_getcap_ind()函数中设置,这符合我的预期。但是sbc_codec_cap没有初始化。所以我得到了图 2 中的 packect 。
在blueZ 5.35中出现了新的包 android/hal-audio-sbc.c,在这个包中设置了 SBC 编码功能。
我的嵌入式设备是基于 RTOS 的,我与 android 无关。所以我有以下疑问:
1)为什么 blueZ 堆栈中有新的 android 包?这背后的发展理念是什么?
2)为什么 SBC 能力在android/hal-audio-sbc.c中初始化,非安卓设备如何访问 SBC 能力?
3)如何在我的嵌入式环境中使用android/hal-audio-sbc.c来获得 SBC 功能?
我想我无法解决这个问题,因为我缺少对新 5.35 架构的理解。并且没有足够的文档来理解 BlueZ 架构。我希望通过回答这些问题,我可以理解 5.35 BlueZ 包中 android 文件夹的重要性。