Как работает кнопка маршрута MPVolumeView?

Я работаю над приложением VoIP, которое позволяет пользователю выбирать источник звука, когда доступно несколько выходов. Это похоже на родное приложение для телефона, когда подключен динамик Bluetooth, оригинальный значок «Динамик» станет значком «Bluetooth/Динамик», где вы можете выбрать Телефон/Динамик/Bluetooth.

После нескольких неудачных попыток с AVAudioSession я нашел обходной путь с MPVolumeView. Кнопка маршрута MPVolumeView позволяет пользователям выбирать, какое устройство будет воспроизводить звук. Тем не менее, это не идеальное решение... но я знаю, что где-то в коде Apple есть методы для извлечения всех доступных источников звука и установки определенного выхода.. Мне интересно, как это делается?

Я знаю, что ранее вы могли использовать Audio Session Services, но эта библиотека устарела в iOS7. И я не смог найти никакого метода для получения доступных источников вывода из альтернативного класса AVAudioSession...

Я искал это в последние несколько дней и задал несколько соответствующих вопросов ... все еще испытываю удачу :)


person xialin    schedule 17.12.2013    source источник
comment
У меня аналогичная проблема. Мне нужно направить звук на устройство Bluetooth, если оно доступно. Однако у меня приложение Adobe Air, поэтому мне нужно сделать часть iOS Bluetooth в качестве собственного расширения, что, как я понимаю, означает, что я не могу использовать какие-либо классы пользовательского интерфейса, такие как MPVolumeView. Вы продвинулись дальше с этим?   -  person Buzzwig    schedule 28.01.2014
comment
Вы хотите, чтобы пользователи автоматически выбирали выход или устанавливали выход в соответствии с приоритетом? Я не мог найти способ разрешить ручной выбор без использования MPVolumeView. но если это происходит автоматически, вы можете сделать это, установив параметры allowBluetooth в AVAudioSession. мое окончательное решение для обработки всех случаев находится здесь: github.com/xialin/AudioSessionManager   -  person xialin    schedule 28.01.2014
comment
@xialinZZZ, я нашел ваш код интересным и хотел бы узнать, не могли бы вы ответить на мой вопрос прямо здесь? stackoverflow.com/questions/21434245/   -  person Stéphane de Luca    schedule 30.01.2014