Введение
iOS обрабатывает аудио поведение в приложении, межприложении и уровнях устройств через аудио сеансы и AVAudioSession
APIs.
Используя AVAudioSession
API, Вы разрешаете вопросы, такие как:
Аудио Вашего приложения должно быть заставлено замолчать переключателем Ring/Silent? Да, если аудио не важно для Вашего приложения. Примером является приложение, позволяющее пользователям сделать заметки на встрече без ее звуковых тревожащих других. Но словарь произношения должен проигнорировать переключатель Ring/Silent и всегда играть — центральная цель приложения требует звука.
Когда Ваше аудио запускается, музыка должна продолжаться? Да, если Ваше приложение является виртуальным фортепьяно, позволяющим пользователям играть песням от их музыкальных библиотек. С другой стороны, когда Ваше приложение запускается если Ваши игры приложения, передающие интернет-радио, потоком музыка должна остановиться.
Пользователи могут включить или отключить гарнитуры, телефонные вызовы могут поступить, и предупреждения могут звучать. Действительно, аудиосреда на устройстве на iOS довольно сложна. iOS делает тяжелый подъем при использовании аудио сеанса APIs, чтобы указать конфигурацию и корректно реагировать на системные запросы, с помощью очень небольшого количества кода.
Сразу
AVAudioSession
дает Вам, управляют аудио поведением Вашего приложения. Вы можете:
Выберите надлежащие маршруты ввода и вывода для своего приложения
Определите, как Ваше приложение интегрирует аудио из других приложений
Прерывания дескриптора из других приложений
Автоматически сконфигурируйте аудио для типа приложения Ваш, создают
Аудио сеанс инкапсулирует ряд способов поведения
Аудио сеанс является посредником между Вашим приложением, и iOS раньше конфигурировал аудио поведение Вашего приложения. На запуск Ваше приложение автоматически получает одноэлементный сеанс аудио.
Экспресс категорий аудио роли
Основной механизм для выражения аудио способов поведения является аудио категорией сеанса. Путем установки категории Вы указываете, использует ли Ваше приложение маршруты ввода или вывода, хотите ли Вы, чтобы музыка продолжала играть вместе с Вашим аудио и т.д. Поведение, которое Вы указываете, должно оправдать пользовательские надежды, как описано в Звуке в Инструкциях по Интерфейсу пользователя iOS.
Семь аудио категорий сеанса, вместе с рядом переопределения и переключателей модификатора, позволяют Вам настроить аудио поведение согласно индивидуальности или роли своего приложения. Различные категории поддерживают воспроизведение, запись и воспроизведение вместе с записью. Когда система знает аудио роль Вашего приложения, она предоставляет Вам надлежащий доступ к аппаратным ресурсам. Система также гарантирует, что другое аудио на устройстве ведет себя в пути, работающем на Ваше приложение; например, при необходимости в Музыкальном приложении, которое будет прервано, это.
Режимы настраивают категории
Пользователи ожидают определенные способы поведения от определенных категорий приложений. Режимы специализируют поведение данной категории. Например, когда приложение использует режим Video Recording, система может выбрать различный встроенный микрофон, чем это было бы, если это использовало режим по умолчанию. Система может также начать обработку сигналов микрофона, настраивающуюся для вариантов использования видеозаписи.
Обработка прерывания поддержки уведомлений
Прерывание звука является деактивацией аудио сеанса Вашего приложения — который сразу останавливает Ваше аудио. Прерывания происходят, когда конкурирующий аудио сеанс из приложения активируется, и тот сеанс не категоризирован системой для смешивания с Вашим. После того, как Ваш сеанс идет неактивный, система отправляет, “Вы были прерваны” сообщение, на которое можно ответить путем сохранения состояния, обновления пользовательского интерфейса, и т.д.
Для обработки прерываний зарегистрируйтесь для AVAudioSessionInterruptionNotification
если в AVAudioSession
. Запишите Ваш beginInterruption
и endInterruption
методы для обеспечения минимального возможного сбоя и самого корректного восстановления, с точки зрения пользователя.
Обработка изменения маршрута аудио поддержки уведомлений
У пользователей есть определенные ожидания, когда они инициируют аудио изменение маршрута путем прикрепления или расстыковки устройства, или путем включения или отключения гарнитуры. Звук в Инструкциях по Интерфейсу пользователя iOS описывает эти ожидания и обеспечивает инструкции по тому, как встретить их. Обработайте изменения маршрута путем регистрации для AVAudioSessionRouteChangeNotification
.
Категории поддерживают расширенные функции
Можно подстроить аудио категорию сеанса во множестве путей. В зависимости от категории Вы можете:
Позвольте другому аудио (такой как из Музыкального приложения) смешиваться с Вашим, когда категория обычно запретит его.
Измените маршрут аудиовыхода с получателя на динамик.
Позвольте аудиовход Bluetooth.
Укажите, что другое аудио должно сократить в объеме («утка»), когда играет Ваше аудио.
Оптимизируйте свое приложение для оборудования устройства во время выполнения. Ваш код адаптируется к устройству, на котором он работает и к изменениям, инициируемым пользователем (такой как путем включения гарнитуры) как выполнение приложения.
Предпосылки
Будьте знакомы с Сенсорной разработкой Какао, столь представленной в Руководстве по программированию Приложения для iOS и с основами Core Audio как описанный в том документе и в Обзоре Core Audio. Поскольку аудио сеансы опираются на практические сценарии конечного пользователя также быть знакомыми с устройствами на iOS, и с Инструкциями по Интерфейсу пользователя iOS, особенно раздел Sound в Инструкциях по Интерфейсу пользователя iOS.
См. также
Можно счесть следующие ресурсы полезными:
Ссылка класса AVAudioSession, описывающая интерфейс Objective-C для конфигурирования и использования этой технологии.
AddMusic, проект примера кода, демонстрирующий использование аудио объекта сеанса в контексте приложения воспроизведения. Эта выборка также демонстрирует координацию между аудио приложения и Музыкальным аудио приложения.