5

我正在寻找为 iPhone 编写应用程序,它将能够控制汽车中的收音机和 CD 播放器。收音机和播放器有可用的蓝牙连接。

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

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

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

1)是否可以通过蓝牙将iPhone(4、4S)与车载收音机和CD播放器配对,并用任何iPhone版本控制电台和音乐?如果是,那么进行这种成功的蓝牙连接有什么限制?

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

2) iPhone 可以充当控制器并向目标设备(收音机和 CD 播放器)发出 AVRCP 1.3 中规定的所有可用命令吗?

我也想知道这个特定问题的可用框架。我知道其中有几个,但是如果有人认出适合我的问题的那个,我想知道:

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

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

4)有谁知道是否有办法将命令发送到目标设备(启动/停止/暂停/前进/后退等)作为 XCode 中提供的某些 API 的一部分,或者我参加通过蓝牙发送到目标的每条消息我需要根据协议文档制作的设备(自己制作整个消息(标题、正文、命令部分等))?

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

从开发人员的角度来看,最后一个问题(如果我认为对之前的所有问题都有任何积极的回答)最让我担心。因此,如果有人可能对这个特定问题有经验,我将不胜感激任何形式的回答或建议。

我真的很期待你的回答。我希望围绕这个话题展开建设性和有用的讨论,并写出很多有用的信息。

最好的祝福。

4

2 回答 2

5

如果您的设备(CD 播放器)符合蓝牙 4.0 LE 标准,您可以使用 CoreBluetooth

于 2012-07-03T11:36:31.677 回答
0

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

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

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

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

于 2015-07-28T08:37:10.357 回答