我认为AVAudioSession API自iOS7以来已经发展了很多,并且经常令人困惑。我的目标是设置RemoteIO单元,从麦克风录制音频并通过耳机同时播放样本。如果没有耳机,则不要播放。如果存在蓝牙麦克风,则将其作为首选而不是耳机麦克风或USB麦克风进行拾取。如果存在单独的耳机,则通过它回放样本。如果相同的蓝牙麦克风也具有耳机功能,那么避免它播放样本,因为它将导致环回造成混乱。
完成这项工作的正确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的行为方式不同。
答案 0 :(得分:0)
这些要求对于使用AVAudioSession来说太复杂了。 使用渲染回调在remoteIO中手动控制。 在AVAudioSession.sharedInstance()。currentRoute中,您可以获得输出和输入。