2012-07-03 2 views
5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

С уважением.

+0

# 1: @javieralog - Спасибо за разъяснение материала о устройствах MFi и BT4.0 LE. – uerceg

ответ

5

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

+0

Благодарим за быстрый ответ. Я читал, что только iPhone 4S поддерживает Bluetooth 4.0 LE совместимые устройства, а предыдущие версии этого не делают. Это правда? И еще один вопрос: если какое-либо устройство не поддерживает Bluetooth 4.0 LE, вы говорите, что НЕВОЗМОЖНО контролировать его с помощью любой версии iPhone так, как я хочу? Заранее спасибо. – uerceg

+0

true для части iPhone. Не уверен, что это правда для iPad; Я думаю, что новый iPad - это BT4.0 с режимом LE – javieralog

+0

вы говорите, что НЕВОЗМОЖНО контролировать его с ЛЮБОЙ версией iPhone так, как я хочу? Да за пределами программы MFi – javieralog

0

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

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

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

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

Смежные вопросы