Подтвердить что ты не робот

AVAudioSessionCategoryPlayAndRecord делает AirPlay невидимым

Я столкнулся со следующей проблемой: AirPlay становится недоступным, когда я устанавливаю категорию воспроизведения и записи в сеанс аудио в моем приложении:

[[AVAudioSession sharedInstance]
        setCategory: AVAudioSessionCategoryPlayAndRecord
        error: &setCategoryError];

Этот вызов заставляет AirPlay исчезать и немедленно перенаправляет звук на динамик.

Проблема может быть легко воспроизведена, например. на примере проекта avTouch из документации Xcode, заменив AVAudioSessionCategoryPlayback категорию на AVAudioSessionCategoryPlayAndRecord: в исходном примере видна панель выбора AirPlay и позволяет изменять выходной источник, тогда как с категорией AVAudioSessionCategoryPlayAndRecord сборщик исчезает.

Существует ли подходящий способ переключения в категорию AVAudioSessionCategoryPlayAndRecord, чтобы AirPlay все еще был доступен?

(Вопрос вроде этого уже задан, но ответа не получил.)

4b9b3361

Ответ 1

Какое устройство AirPlay вы пытаетесь использовать? Есть ли у него микрофон?

Если нет, iOS не представит его в качестве опции при использовании категории PlayAndRecord, потому что это устройство не может воспроизводить запись и. Он будет отображаться при использовании категории Play.

Кроме того, если устройство, которое вы используете, является устройством Bluetooth, установите для параметра AVAudioSessionCategoryOptionAllowBluetooth значение YES?

Ответ 2

Думаю, вы должны добавить код ниже AVAudioSession. Я надеюсь, что это сработает.

NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: &setCategoryError];

if (setCategoryError) {
    // Handle error
}

Ответ 3

Ну, AirPlay и категория PlayAndRecord просто несовместимы. Это то, что я узнал на форумах Apple.

Зачем вам нужен аудиовход на устройстве, когда аудиовыход происходит где-то в другом месте?