Выберите аудиоустройство на iPhone

есть ли способ позволить пользователю выбрать, какое устройство они используют для вывода звука?

в документах я обнаружил, что вы можете выбрать, какой маршрут использовать, установив kAudioSessionProperty_OverrideAudioroute либо:

  • kAudioSessionOverrideAudioRoute_none, или
  • kAudioSessionOverrideAudioRoute_speaker

однако я хотел бы позволить пользователю использовать свою Bluetooth-гарнитуру, чтобы услышать звуковой.

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

  • Bluetooth-гарнитура
  • iPhone
  • динамик

есть ли способ достичь этой функциональности с помощью стандартных API Apple в моем собственном приложение?

3 ответов


в 3.1 есть два протокола, которые поддерживают вывод аудио на Bluetooth-устройства и зависит от аксессуара. Первый-A2DP, который используется с аксессуарами, которые поддерживают получение стерео музыки, а другой-свободные руки для всех аксессуаров громкой связи. Чтобы активировать первый вариант, вам нужно использовать класс MPVolumeView, который имеет ползунок громкости и кнопку выбора аудиоустройства, когда это представление добавляется к любому из представлений в приложении, оно предоставляет пользователю возможность установить громкость и выберите устройство BT, если оно подключено ( это единственный способ, который я нашел) С другой стороны, второй вариант можно активировать с помощью вызова

 UInt32 bt = TRUE;
 result = AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryEnableBluetoothInput , sizeof(UInt32), &bt);

приложение должно инициализировать аудиосессию и использовать catagory corect (он должен поддерживать перекодирование, чтобы это работало). После установки EnableBluetoothInput все входное и выходное аудио будет маршрутизироваться через устройство громкой связи (если подключено, конечно :))


самый простой способ-добавить элемент управления MPVolume (ссылка на документацию) к вашему пользовательскому интерфейсу и установите showsVolumeSlider = NO и showsRouteButton = YES.

пользователь будет иметь кнопку маршрута для маршрутизации звука на устройство по своему выбору.