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

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

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

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

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

1) Можно ли подключить iPhone (4, 4S) к радио и проигрывателю компакт-дисков в машине через Bluetooth и управлять радиостанциями и музыкой с любой версии iPhone? Если да, то каковы ограничения для такого успешного подключения Bluetooth?

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

2) Может ли iPhone действовать как контроллер и выдавать все доступные команды, указанные в AVRCP 1.3, на целевое устройство (радио и проигрыватель компакт-дисков)?

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

3) Какую платформу для взаимодействия с целевым устройством мне следует использовать?

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

4) Кто-нибудь знает, как, если есть способ отправлять команды на целевое устройство (запуск / остановка / пауза / вперед / назад и т. д.) как часть некоторого API, предоставленного в XCode, или каждое сообщение, которое я посещаю, для отправки через Bluetooth на целевое устройство, которое мне нужно создать в соответствии с документацией протокола (сделать все сообщение (заголовок, тело, часть команды и т. Д.) Самостоятельно)?

AVRCP был моей идеей для выполнения этого приложения. Если я ошибаюсь, дайте мне знать. Bluetooth имеет разные профили, и когда сообщение отправляется с одного устройства, насколько я понимаю, сам профиль обрабатывает сообщение, интерпретирует его и доставляет на целевое устройство, чтобы целевое устройство могло его понять. Я не понимаю, как обрабатывается сообщение, отправленное с iPhone на целевое устройство Bluetooth, с момента его отправки из моего кода Objective-C (или C). Это основное сомнение, которое у меня есть, и оно связано с вопросом 4 - нужно ли мне создавать необработанные сообщения в правильном формате, чтобы отправлять команды AVRCP на устройство, или я могу использовать какой-то API, который распознает эти сообщения как AVRCP (или любой другой) и доставить его на целевое устройство?

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

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

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


person uerceg    schedule 03.07.2012    source источник
comment
# 1: @javieralog - Спасибо за разъяснения об устройствах MFi и BT4.0 LE.   -  person uerceg    schedule 03.07.2012


Ответы (2)


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

person javieralog    schedule 03.07.2012
comment
Спасибо за быстрый ответ. Я читал, что только iPhone 4S поддерживает устройства, совместимые с Bluetooth 4.0 LE, а предыдущие версии - нет. Это правда? И еще один вопрос: если какое-либо устройство не поддерживает Bluetooth 4.0 LE, вы говорите, что НЕВОЗМОЖНО управлять им с ЛЮБОЙ версией iPhone так, как я хочу? Заранее спасибо. - person uerceg; 03.07.2012
comment
верно для части iPhone. Не уверен, что это правда для iPad; Я думаю, что новый iPad - это BT4.0 с режимом LE - person javieralog; 03.07.2012
comment
Вы говорите, что НЕВОЗМОЖНО управлять им с ЛЮБОЙ версией iPhone так, как я хочу? Да вне программы MFi - person javieralog; 03.07.2012
comment
Большое спасибо javieralog. Сможете ли вы в двух предложениях прояснить мне, что такое MFi на самом деле? Это программа, в которой участники получают какую-то конкретную структуру для взаимодействия с устройствами, не поддерживающими Bluetooth 4.0 LE, или это программа, в которой говорится, как создать устройство Bluetooth для взаимодействия с устройством Apple (iPhone, iPad или что-либо еще)? - person uerceg; 03.07.2012
comment
На MFi распространяются соглашения о неразглашении, поэтому общедоступной информации нет. Но я думаю, что и то, и другое верно: для этого может быть Framework, и вы должны спроектировать свое устройство BT для подключения к устройству iOS. - person javieralog; 03.07.2012
comment
Еще раз спасибо за ответы. Я бы дал вам +1, но у меня нет репутации, чтобы делать такие вещи. Если кто-нибудь прочитает этот разговор об этом первом ответе, я хотел бы услышать ответ на свой последний вопрос (если предположить, что устройство, которым я пытаюсь управлять через iPhone, совместимо с Bluetooth 4.0 LE). - person uerceg; 03.07.2012
comment
Устройства с поддержкой MFI используют структуру внешних аксессуаров. Устройства BTLE используют Core Bluetooth, оба используют необработанные команды, и для каждого профиля нет структуры (только документированные команды, если принят известный профиль). - person Martin; 03.07.2012
comment
Спасибо, Мартин. Сейчас я читаю всевозможные сообщения в Интернете и должен спросить еще раз: если целевое устройство Bluetooth, отличное от Apple, поддерживает некоторый профиль Bluetooth, который также поддерживает iPhone, для iPhone ВСЕ ЕЩЕ НЕ ВОЗМОЖНО взаимодействие с этим устройством, ЕСЛИ это устройство не является Bluetooth 4.0 LE совместимый? - person uerceg; 03.07.2012
comment
Не обошлось и без программы MFI. - person Martin; 03.07.2012
comment
Да, еще раз спасибо. Я думаю, что мы прояснили эту часть с не-BT4.0 LE и MFi. Теперь, если кто-нибудь знает, как взаимодействовать с целевым устройством, совместимым с BT4.0 LE (ответ на мой 4-й вопрос), я был бы очень благодарен за ответ. - person uerceg; 03.07.2012
comment
Используя Core Bluetooth framework. взгляните на самый последний набор видеороликов WWDC. Там 2 часа обучающих программ :) - person Martin; 03.07.2012
comment
Мартин, не могли бы вы дать мне ссылку на те видео, о которых вы говорите? Спасибо заранее. (редактирование №1: я нашел видео Core Bluetooth 101 по адресу: developer.apple.com/videos / wwdc / 2012, а также слайды презентации на adcdownload.apple.com/ / wwdc_2012 / wwdc_2012_session_pdfs / Если я что-то пропустил, дайте мне знать. Спасибо.) - person uerceg; 09.07.2012
comment
Я создаю приложение, которое будет управлять моим видео / DVD-плеером. Я знаю, что могу управлять им с помощью Core Blue API. Но возможно ли это на Ipad 2 или некоторых старых айфонах в ios 7? - person Yogesh Kulkarni; 27.03.2014

Скорее всего, вы не сможете это сделать, даже если в вашем автомобильном проигрывателе компакт-дисков установлен BLE 4.0.

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

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

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

person launic    schedule 28.07.2015