首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS蓝牙双模;同时将BLE (关机)连接到已连接的BR/EDR (A2DP/HFP)立体声耳机

iOS蓝牙双模;同时将BLE (关机)连接到已连接的BR/EDR (A2DP/HFP)立体声耳机
EN

Stack Overflow用户
提问于 2014-04-14 17:34:44
回答 3查看 14.8K关注 0票数 14

我正在开发一个带有蓝牙的立体声耳机,使用经典的配置文件(HFP,A2DP,AVRCP),就像人们期望的那样。然而,我想为iOS部署一个远程控制应用程序,并同时将其用于其他经典链接,但我在设计中使用的双模芯片组的行为并不像我预期的那样;

头戴式耳机设置为外围设备,让iOS设备充当中央设备。因此,外围设备通告它的BLE服务(使用我的特定128位UUID),一切都是好的。我可以从任何中心浏览外围设备,但仅当我没有连接到经典配置文件时(例如,在没有流式音频的情况下)。

连接HFP和/或A2DP时,我的设备似乎无法播发BLE!然而,我已经看到了同一芯片组的演示,作为BLE中央,扫描和连接到其他BLE外围设备,同时通过A2DP流式音频。然而,在该设置中,该设备充当连接到iPhone A2DP信宿,同时通过BLE扫描/连接到充当BLE外围设备的第三单元。因此,不能将传统蓝牙和智能蓝牙的点对点连接到同一设备。

是否存在支持/连接到Bluetooth Classic profiles时不能充当外围设备的双模限制?在这种情况下只支持中央模式?

仅供参考,我使用的是CSR的8670芯片组。

更新

已添加新答案。我很抱歉直到现在才澄清/清理我之前的答案--时光飞逝!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-28 19:08:03

我想,只要你活着,你就会学习,这个问题的答案并不是我之前声称的不支持它(基于我认为我知道的东西)。

对于CSR芯片组上的双模和耳机开发,简单明了的回答是,它是早期SDK上的CSR蓝牙堆栈中的一个约束。

蓝牙SIG从不支持在通过传统链接连接到同一设备时充当外设的双模模式。相反,它清楚地说明了。应该如何实现这种互操作性--但这并不总是意味着所有BT堆栈实现都能够实现这样的功能。

因此,使用最新的devtools和CSR的最新蓝牙固件/堆栈已经解决了所有问题,双模式现在已经完全,实际上我可以很好地补充说,在CSR8670/75芯片组上支持。

票数 8
EN

Stack Overflow用户

发布于 2014-04-14 21:34:32

嗯,在深入研究规范并试图更清楚地理解事物之后,我找到了我正在寻找的答案,尽管我更喜欢更乐观的答案……;(

然而,让我们开始吧;蓝牙4.0规范(BLE)规定;

双模小工具不能充当BLE外围设备,并在仍可使用BR/EDR在“经典”蓝牙中连接的同时通告其存在。

此外,我正在使用的CSR8670双模芯片组的CSR源代码示例的所有行为都是相同的;当连接任何经典的BT链路时,作为外围设备的BLE广告都是禁用的。相反,CSR源代码建议设备应充当BLE中央设备,允许其他BLE外围设备通告并连接到它,所有这些都完全可以在流式传输音频时进行(充当A2DP接收器)。

这根本不适合我的设置,因为;

  1. BLE中央设备比BLE外围设备消耗更多的电量,我的设备需要节省能源
  2. 将BR/EDR设备与BLE外围设备功能相结合的双模“组合”-problem刚刚转移到手机上,这不会更好地工作,因为我们不能期望苹果公司(或其他任何人)违反BLE规范。

相反,推荐的方法是让我的立体声耳机完全跳过BLE,而使用GATT而不是BR/EDR,也称为通过"vanilla“进行广告,这真的很有意义;我的意思是,我已经在两个设备之间建立了ACL链接,为什么我需要踢开任何类型的发现机制?

再一次,蓝牙SIG派上用场;

https://developer.bluetooth.org/TechnologyOverview/Pages/GATT.aspx

ATT和

不是特定于传输的,可以在BR/EDR和LE中使用。但是,GATT和ATT必须在LE中实现,因为它们用于发现服务

因此,SIG同意使用BR/EDR作为关贸总协定的传输,但问题变成了:我如何在iOS-app中访问连接的BR/EDR设备,其中典型的场景是使用CBCentral扫描、发现并连接到CBPeripheral?答案很简单;你不能,因为iOS 7.0不能(还没有?)支持BR/EDR的GATT;

https://www.bluetooth.org/tpg/showDeclaration.cfm?3A000A5A005C5344535D5414403B0C0D0E2405022413010E57503F202A5A72

所以,总而言之,如果你想在两个使用蓝牙经典配置文件和蓝牙智能服务/特征的双模蓝牙设备之间进行点对点的设置,你应该使用GATT over BR/EDR,这对于苹果设备是不可行的,但可能会被Android支持(不知道最终会把应用程序移植到Android上,但无论如何这对Android来说不是什么大问题,因为最坏的情况将意味着我会退回到SPP和一个简单的字节协议来完成我需要完成的工作)。

就是这样。希望我已经帮助了某个人;) /Markus

票数 13
EN

Stack Overflow用户

发布于 2015-10-16 12:44:12

我也在使用CSR8670设备。它让它工作了。包括BLE外设和音频。

您需要通过CSR使用ADK 4.0.0。

蓝牙4.1和蓝牙4.0是不同的。你所说的蓝牙4.0是正确的,但是你的芯片可以支持蓝牙4.1。

4.1允许这样的连接。

我还在广告包中添加了“双模式”标志。

有几种情况,比如连接间隔至少为90毫秒,强烈建议您不要弄乱音频。

祝好运!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23056668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档