Существует ли способ позволить пользователю выбрать, какое устройство они используют для аудиовыхода?
В документах я нашел, что можно выбрать который маршрут использовать путем установки kAudioSessionProperty_OverrideAudioRoute к также:
Однако я хотел бы позволить пользователю для использования их гарнитуры Bluetooth для слушания аудио.
Если Вы смотрите в собственном приложении 'Голосовых заметок' Apple, в меню воспроизведения существует кнопка в верхнем левом, которое позволяет Вам выбрать который аудиоустройство использовать. Когда гарнитура Bluetooth присоединяется, нажимание кнопки поднимает меню, которое позволяет выбрать между:
Существует ли способ достигнуть этой функциональности с помощью стандартных API Apple в моем собственном приложении?
В версии 3.1 есть два протокола, которые поддерживают передачу звука на устройства bluetooth, и их использование зависит от аксессуара. Первый - A2DP, который используется с аксессуарами, поддерживающими прием стерео музыки, а второй - hands free для всех аксессуаров handsfree. Чтобы активировать первый вариант, вам нужно использовать класс MPVolumeView, который имеет ползунок громкости и кнопку выбора аудиоустройства, когда это представление добавляется к любому представлению в приложении, оно предоставляет пользователю возможность установить громкость и выбрать BT-устройство, если оно подключено (это единственный способ, который я нашел). С другой стороны, второй вариант может быть активирован с помощью вызова
UInt32 bt = TRUE;
result = AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryEnableBluetoothInput , sizeof(UInt32), &bt);
Приложение должно инициализировать аудио сессию и использовать corect catagory (оно должно поддерживать перекодирование, чтобы это работало). После установки EnableBluetoothInput все входные и выходные аудиосигналы будут направляться через устройство громкой связи (если оно подключено, конечно :))
.Он работает с CoreAudio: Может ли iPhone 3.0 SDK обеспечить полный доступ к Bluetooth-устройствам (гарнитурам)?