Я думаю, что API-интерфейсы AVAudioSession немного изменились со времен iOS7 и часто сбивают с толку. Моя цель — настроить блок RemoteIO, записывать звук с микрофона и одновременно воспроизводить сэмплы через наушники. Если наушников нет, то не воспроизводить. Если микрофон Bluetooth присутствует, выберите его как предпочтительный вместо микрофона гарнитуры или USB-микрофона. Если есть отдельные наушники, то воспроизводите сэмплы через них. Если тот же Bluetooth-микрофон также имеет функцию гарнитуры, избегайте воспроизведения семплов, так как он будет зацикливаться, создавая беспорядок.
Какие API подходят для этого? В настоящее время я использую следующий код, но он не выполняет всю работу.
AVAudioSession *session = [AVAudioSession sharedInstance];
NSUInteger bluetoothOpt = AVAudioSessionCategoryOptionAllowBluetooth;
if (![session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:bluetoothOpt | AVAudioSessionCategoryOptionMixWithOthers error:nil]) {
NSLog(@"Could not set audio session category");
}
Должен ли я вместо этого использовать AVAudioSessionCategoryMultiRoute? Как выбрать предпочтительный вход и выход? Все на iOS 11, как я вижу, API ведут себя по-другому.