据我所知,iPhone上有2个麦克风。 1位于音频插孔旁边的顶部附近,另一个是您要讲话的麦克风。
默认麦克风似乎是您要讲话的麦克风。

如何以编程方式选择使用哪种麦克风?我正在为我的应用程序使用Core Audio。

基本上,我想使用顶级麦克风进行录音。目前,当我录制底部麦克风时正在使用。有没有办法覆盖默认麦克风设置?

我知道可以通过以下方法覆盖默认扬声器设置。

UInt32 yes = YES;

AudioSessionSetProperty( kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,        sizeof(UInt32),   &yes );

iPhone上的麦克风有什么类似的东西吗?

谢谢。

最佳答案

使用AVAudioSession获取可用的输入。

NSLog(@"%@", [AVAudioSession sharedInstance].availableInputs);

"<AVAudioSessionPortDescription: 0x14554400, type = MicrophoneBuiltIn; name = iPhone Microphone; UID = Built-In Microphone; selectedDataSource = Back>"

然后使用这些输入之一来获取availableDataSources,如下所示。
NSLog(@"%@", [AVAudioSession sharedInstance].availableInputs[0].dataSources);

"<AVAudioSessionDataSourceDescription: 0x145afb00, ID = 1835216945; name = Bottom>",
"<AVAudioSessionDataSourceDescription: 0x145b1870, ID = 1835216946; name = Front>",
"<AVAudioSessionDataSourceDescription: 0x145b3650, ID = 1835216947; name = Back>"

我们可以看到此iPhone上实际上有三个麦克风:顶部,顶部,底部和底部。现在,您可以设置首选数据源。
AVAudioSessionPortDescription *port = [AVAudioSession sharedInstance].availableInputs[0];
for (AVAudioSessionDataSourceDescription *source in port.dataSources) {
    if ([source.dataSourceName isEqualToString:@"Back"]) {
        [port setPreferredDataSource:source error:nil];
    }
}

希望这对您有帮助
快乐编码!

关于iphone - 仅使用iPhone中的顶级麦克风,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14334755/

10-12 13:32