Выбор между встроенным микрофоном и гарнитурой в iOS

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

Мы видели 2 темы с этих страниц:Принудительное использование микрофона iPhone в качестве аудиовхода а такжеИспользуйте встроенный микрофон, если гарнитура подключена но я думаю, что нетлюбое заключительное слово в соответствии с этой ситуацией.

Теперь код работает, но мы можем выбрать маршрут для аудиовхода.

У нас нетничего не нашел в документации, предоставленной Apple (Remote IO).

В этом есть что-то новое?

Спасибо!

Ответы на вопрос(1)

Решение Вопроса

Предупреждение: Этот ответ относится только к iOS6. Это не правильно для iOS7 или позже. Смотрите комментарии для деталей.

Это возможно, но только с побочным эффектом. Изменение устройства ввода также изменяет устройство вывода. Вы не сможете записывать через встроенный микрофон и в то же время слушать свою запись в режиме реального времени через гарнитуру ».наушники Это означает, что если вы не хотите одновременно прослушивать вашу запись через наушники, для вас есть решение:

Подключив гарнитуру (= комбинированные наушники и микрофон), вы можете выбрать один из двух вариантов:

внутренний микрофон для входа и динамик для выходагарнитура»Микрофон для ввода и гарнитурынаушники для вывода

(Вы не можете использовать их смесь.)

Вы выбираете одну из альтернатив, устанавливая свойствоkAudioSessionProperty_OverrideAudioRoute через функциюAudioSessionSetProperty API Audio Session Services. В документации на имущество говорится:

Если гарнитура подключена во время установки этого свойствас значение дляkAudioSessionOverrideAudioRoute_Speakerсистема изменяет маршрутизацию звука как для входа, так и для выхода: вход поступает со встроенного микрофона; выход идет на встроенный динамик.

 zo_chu20 нояб. 2017 г., 09:08
@DanielS. Можете ли вы привести пример, как вы можете играть и записывать с разных маршрутов? Используя какой API?
 Daniel S.22 июл. 2013 г., 23:11
Обратите внимание, что iPhone способен различать гарнитуру (совмещенный микрофон и наушники) и наушники. Он ведет себя по-разному для этих двух типов устройств относительно изменений маршрута, потому что он, очевидно, не может изменить маршрут ввода при подключении только наушников без встроенного микрофона. Я не проверял точное поведение в таком случае.
 Daniel S.19 июл. 2014 г., 12:38
Iwaz»Комментарий очень важен: теперь в iOS7 приложение может самостоятельно выбирать входные и выходные маршруты. Например. Вы можете использовать встроенный микрофон для записи звука и воспроизведения этого звука одновременно через подключенную гарнитуру.наушники, а гарнитураМикрофон остается неиспользованным. Это было невозможно в iOS6. Расширенный API находится в классе AVAudioSession.
 Iwaz22 мар. 2014 г., 12:11
На iOS 7 не рекомендуется использовать AVAudioSession - setPreferredInput:
 Daniel S.21 нояб. 2017 г., 16:44
@zo_chu API изменился с тех пор, как я опубликовал этот ответ. У меня нетя еще не работал с новым API, поэтому я не могуне могу привести пример, просто потому что яЯ больше не эксперт по этому вопросу. Однако, потому что то, что вы спросили, важно, я думаю, чтоСтоит потратить время на то, чтобы вы открыли еще один вопрос о стековом потоке, чтобы привлечь внимание к этой теме. Более того, успешный эксперт, который проливает свет на это, получает шанс заработать очки за свою работу.

Ваш ответ на вопрос