AVAudioSession: наушники с микрофоном в качестве входа и динамик iphone в качестве выхода

В iOS10 есть больше возможностей для управления AUdioSession, но мне не удалось сохранить микрофон наушников в качестве входа, пока звук выходит через динамик iphone.

Приведенный ниже метод overrideOutputAudioPort также переопределяет входной аудиопорт в качестве микрофона iphone.

let session = AVAudioSession.sharedInstance()
do {
  try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
  try! session.overrideOutputAudioPort(.speaker)  
} catch {
}

Есть ли решение оставить наушники в качестве входа?


person Damien Romito    schedule 05.01.2017    source источник


Ответы (1)


Насколько я понимаю эту документацию Apple, это не возможно с помощью AVAudioSession:

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

person shallowThought    schedule 05.01.2017
comment
это неверно для новой опции allowBluetoothA2DP (начиная с iOS10) try session.setCategory(AVAudioSessionCategoryPlayAndRecord, with: .allowBluetoothA2DP) : с этой опцией вход микрофона не меняется (только выход) - person Damien Romito; 05.01.2017
comment
@DamienRomito интересно. Я не знал об этом. Это задокументировано (помимо видео(ов) WWDC)? - person shallowThought; 05.01.2017
comment
Откуда ты знаешь, чем? - person shallowThought; 05.01.2017
comment
stackoverflow.com/questions/ 23895832/ - person Damien Romito; 05.01.2017