Технические вопросы и ответы QA1754

AVAudioSession - Различия между AVAudioSessionPortOverrideSpeaker и объясненным AVAudioSessionCategoryOptionDefaultToSpeaker

Q: Можете Вы объяснять различие между вызовом метода AVAudioSession overrideOutputAudioPort: со значением AVAudioSessionPortOverrideSpeaker и использование опции категории AVAudioSessionCategoryOptionDefaultToSpeaker с setCategory:withOptions:error:.

A: Различием является та установка AVAudioSessionPortOverride путем вызова overrideOutputAudioPort: больше переходного процесса, чем использование опции категории AVAudioSessionCategoryOptionDefaultToSpeaker.

Вызов overrideOutputAudioPort: и установка AVAudioSessionPortOverride к AVAudioSessionPortOverrideSpeaker способ временного переопределения вывода для игры динамику. Любое изменение маршрута или прерывание заставят аудио быть направленным назад к его обычному маршруту, после последнего - в правиле побед. Думайте об использовании overrideOutputAudioPort: с точки зрения какого Вы могли бы использовать для реализации Кнопки громкоговорителя, где Вы хотите быть в состоянии переключиться между динамиком (AVAudioSessionPortOverrideSpeaker) и нормальный выходной маршрут (AVAudioSessionPortOverrideNone).

Предпочтительный способ реализовать функциональность Спикерфона состоит в том, чтобы использовать MPVolumeViewкнопка Route.

Напротив, AVAudioSessionCategoryOptionDefaultToSpeaker изменяет поведение маршрутизации AVAudioSessionCategoryPlayAndRecord категория так, чтобы аудио всегда направило к динамику, а не получателю, если не будет использоваться никакой другой аксессуар, такой как наушники.

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

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

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



История версии документа


ДатаПримечания
11.09.2013

Обновленный для AVAudioSession

20.09.2011

Новый документ, обсуждающий различие между использованием порта, переопределяет опция AVAudioSessionCategoryOptionDefaultToSpeaker категории и AVAudioSessionPortOverrideSpeaker.