用iPhone控制蓝牙音频设备

我正在寻找能够控制汽车收音机和CD播放器的iPhone应用程序。 收音机和播放器可以使用蓝牙连接。

我开始这个问题是为了获得这个地方所需的所有信息。 我几乎没有问题,但如果您发现任何我认为开始开发此应用程序的重要信息,请告诉我。

我已经阅读了关于AVRCP配置文件和车载支持AVRCP 1.3的蓝牙设备,这对我来说已经足够了,考虑到可以在该协议版本中执行的控制。

我读了很多关于人们说“Apple设备只能互相交互”,“Apple设备无法通过蓝牙连接到非Apple设备”,“MFi程序是强制性的,如果你想这样做”,“MFi不需要“,等等。我的第一个问题是:

1)甚至可以通过蓝牙和控制广播电台和任何iPhone版本的音乐将iPhone(4,4S)与收音机和CD播放器配对吗? 如果是,那么成功实现蓝牙连接的限制是什么?

关于iPhone可以工作的角色的信息也很少。 对于AVRCP,有两种角色:控制器和目标角色。 通过阅读本文: https : //developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf我没有找到第二个问题的答案:

2)iPhone可以作为控制器并将AVRCP 1.3中规定的所有可用命令发送到目标设备(无线电和CD播放器)吗?

我还想了解这个特定问题的可用框架。 我知道有几个,但如果有人认出我的问题是正确的,我想知道:

3)我应该使用哪种与目标设备交互的框架?

从开发人员的角度来看,我也对可用于与连接的蓝牙设备进行交互的API感兴趣。 由于我正在创建自己的应用程序并为按钮分配操作,因此在分配给按钮的方法内部,我需要执行向目标设备发送消息。 所以我的下一个问题是:

4)有没有人知道如何将命令发送到目标设备(开始/停止/暂停/前进/后退等)作为XCode中提供的某些API的一部分,或者我通过蓝牙发送到目标的每条消息我需要根据协议文档制作的设备(自己制作完整的信息(标题,正文,命令部分等))?

AVRCP是我完成此应用程序的想法。 如果我错了,请告诉我。 蓝牙具有不同的配置文件,并且当从一个设备发送消息时,据我所知,配置文件本身处理消息并将其解释并传送到目标设备,以便目标设备可以理解它。 我不明白从我从Objective-C(或C)代码发送消息后,从iPhone发送到目标蓝牙设备的消息是如何处理的。 这是我的主要疑问,它与问题4有关 – 我是否需要以正确的格式制作原始消息才能将AVRCP命令发送到设备,或者我可以使用某些API将这些消息识别为AVRCP(或任何其他类型) )并将其交付给目标设备

最后一个问题(如果我认为对以前的所有问题都有任何积极的答案)从开发人员的角度来看最让我担忧。 所以,如果有人有这个特定问题的经验,我会很感激任何答案或建议。

我真的很期待你的回答。 我希望在这个主题上开始建设性和有用的讨论,并编写许多有用的信息。

最好的祝福。

如果您的设备(CD播放器)符合蓝牙4.0 LE,则可以使用CoreBluetooth执行此操作

即使你的车载CD播放器有BLE 4.0,你也很可能无法做到这一点。

随着核心蓝牙设备充当“中央”(客户端)或“外围设备”(服务器),外围设备“具有数据”并公开具有特征(变量)的服务。 中央(客户端)从外围设备读取数据或订阅通知。

您唯一的机会是连接到CD播放器作为外围设备(服务器),而您的iPhone作为中心(客户端)。 在这种情况下,CD播放器必须公开允许您控制它的服务。 说实话,我不知道如何做到这一点,因为中央(iPhone)将读取数据并从外围设备接收通知,反之亦然。

扭转角色,实现iPhone作为外围设备是有道理的,但没有预定义的蓝牙LE服务用于远程控制,因此您的车载CD播放器不知道您期望的服务。 它可能使用HID服务(人机接口设备),一般用于键盘和鼠标,但根据这篇文章 ,Apple在iOS上禁止HID。