Управление аудиоустройством Bluetooth с iPhone

Я ищу приложение для iPhone, которое сможет управлять радио и проигрывателем компакт-дисков в автомобиле. Радио и плеер имеют Bluetooth-соединение.

Я начал этот вопрос, чтобы получить всю информацию, которая мне нужна для этого одного места. У меня есть несколько вопросов, но если вы найдете что-то, что я не спрашивал, важно для меня, чтобы начать разработку этого приложения, пожалуйста, дайте мне знать.

Я читал о профиле AVRCP и устройстве Bluetooth в автомобиле, поддерживающем AVRCP 1.3, что достаточно для меня, имея в виду элементы управления, которые можно выполнять в этой версии протокола.

Я много читал о людях, которые говорили, что «устройство Apple может взаимодействовать только друг с другом», «устройство Apple не может быть подключено через Bluetooth к устройству не от Apple», «MFi-программа обязательна, если вы хотите сделать это». , "MFi не нужен" и т. д. Мой первый вопрос:

1)Is it even possible to pair iPhone (4, 4S) with radio and CD player in car via Bluetooth and control radio stations and music with any iPhone version? If yes, what are the limitations for making this kind of successful Bluetooth connection?

Также очень мало информации о ролях, в которых может работать iPhone. Для AVRCP есть два вида ролей: контроллер и целевая роль. Читая эту статью:https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf Я не нашел ответа на свой второй вопрос:

2) Can iPhone act as a controller and issue all available commands stated in AVRCP 1.3 to target device (radio and CD player)?

Я также хотел бы знать о доступных рамках для этой конкретной проблемы. Я знаю, что их несколько, но если кто-то узнает, какой из них подходит для моей проблемы, я хотел бы знать:

3) Which framework for interacting with target device should I use?

С точки зрения разработчика, меня также интересуют доступные API для взаимодействия с подключенным устройством Bluetooth. Поскольку я делаю свое собственное приложение и назначаю действия кнопкам, внутри методов, назначенных кнопкам, мне нужно выполнить отправку сообщений на целевое устройство. Итак, мой следующий вопрос:

4) Does anyone know how if there's a way to send commands to target device (start/stop/pause/forward/backward, etc) as part of some API provided in XCode, or each message which I attend to send via Bluetooth to target device I need to make according to protocol documentation (make entire message (header, body, command part, etc) by myself)?

AVRCP была моя мысль для выполнения этого приложения. Если я ошибаюсь, пожалуйста, дайте мне знать. Bluetooth имеет разные профили, и когда сообщение отправляется с одного устройства, насколько я понимаю, сам профиль обрабатывает сообщение, интерпретирует его и доставляет на целевое устройство, чтобы целевое устройство могло его понять. Я не понимаю, как обрабатывается сообщение, отправленное с iPhone на целевое устройство Bluetooth, с момента отправки его из моего кода Objective-C (или C). Это главное сомнение, которое у меня есть, и оно связано с вопросом 4 -do I need to make raw messages in correct format in order to send AVRCP commands to device or I can use some API which will recognize those messages as AVRCP (or any other kind) and deliver it to target device?

Этот последний вопрос (если я предполагаю, что есть какой-либо положительный ответ на все предыдущие) касается меня больше всего с точки зрения разработчика. Поэтому, если у кого-то есть опыт решения этой конкретной проблемы, я буду признателен за любой ответ или совет.

Я действительно с нетерпением жду ваших ответов. Я надеюсь, что конструктивное и полезное обсуждение начнется по этой теме и что будет написано много полезной информации.

С наилучшими пожеланиями.

 uerceg03 июл. 2012 г., 13:52
# 1: @javieralog - Спасибо за разъяснения по поводу устройств MFi и BT4.0 LE.

Ответы на вопрос(2)

Most likely you shall not be able to do it even if your car CD player has BLE 4.0.

Устройства Core Bluetooth действуют как «центральные» (клиент) или "Периферийное устройство" (сервер), периферийное устройство "имеет данные" и выставлять услуги с характеристиками (переменными). Центральный (клиент) считывает данные с периферийного устройства или подписывается на уведомления.

Ваш единственный шанс - подключиться к CD-плееру в качестве периферийного устройства (сервер), а ваш iPhone - в качестве центрального (клиент). В этом случае проигрыватель компакт-дисков должен предоставлять службы, позволяющие вам управлять им. Честно говоря, я не знаю, как это можно сделать, поскольку центральный (iPhone) будет считывать данные и получать уведомления от периферийного устройства, а не наоборот.

Смена ролей, реализация iPhone в качестве периферийного устройства имеет смысл, но нет предопределенной службы Bluetooth LE для дистанционного управления, поэтому автомобильный CD-плеер не знает, какую услугу ожидать от вас. Он может работать с использованием службы HID (Human Interface Device), обычно используемой для клавиатуры и мыши, но в соответствии с этимсообщение HID запрещен Apple на iOS.

Решение Вопроса

Вы можете сделать это с помощью CoreBluetooth, если ваше устройство (CD-плеер) поддерживает Bluetooth 4.0 LE

 03 июл. 2012 г., 13:39
верно для части iPhone. Не уверен, что верно для iPad; Я думаю, что новый iPad BT4.0 с режимом LE
 03 июл. 2012 г., 13:46
MFi покрыт NDA, поэтому не так много общедоступной информации. Но я думаю, что оба верны: для этого может быть Framework, и вы должны спроектировать ваше устройство BT для соединения с устройством iOS.
 03 июл. 2012 г., 13:40
Вы говорите, что НЕВОЗМОЖНО управлять им с ЛЮБОЙ версией iPhone так, как я хочу? Да, вне программы MFi
 uerceg03 июл. 2012 г., 13:44
Спасибо большое javieralog. Можете ли вы в 2 предложениях уточнить мне, что на самом деле MFi? Это та программа, в которой участники получают какую-то конкретную платформу для взаимодействия с устройствами, отличными от Bluetooth 4.0 LE, или это программа, в которой говорится, как создать устройство Bluetooth для взаимодействия с устройством Apple (iPhone, iPad или что-то еще)?
 uerceg03 июл. 2012 г., 13:38
Спасибо за оперативный ответ. Я читал, что только iPhone 4S поддерживает Bluetooth 4.0 LE-совместимые устройства, а предыдущие версии не поддерживают. Это правда? И еще один вопрос: если какое-либо устройство не поддерживает Bluetooth 4.0 LE, вы говорите, что НЕВОЗМОЖНО управлять им с любой версией iPhone так, как я хочу? Заранее спасибо.

Ваш ответ на вопрос