嘗試此鏈接: https://forums.developer.apple.com/message/64086#64086
// activate the audio session
[[AVAudioSession sharedInstance] setActive:YES error:&error];
if (error) NSLog(@"ERROR SETTING SESSION ACTIVE! %ld", (long)error.code);
// select the built-in Back mic if available
NSArray *portDescriptions = sessionInstance.availableInputs;
AVAudioSessionPortDescription* builtInMicPort = nil;
AVAudioSessionDataSourceDescription* backDataSource = nil;
NSLog(@" availableInputs:\n");
NSLog(@"%@", portDescriptions);
for (AVAudioSessionPortDescription* port in portDescriptions) {
if ([port.portType isEqualToString:AVAudioSessionPortBuiltInMic]) {
builtInMicPort = port;
break;
}
} // end input iteration
NSLog(@" port Info:\n");
NSLog(@"%@", builtInMicPort.portType);
NSLog(@"%@", builtInMicPort.portName);
NSLog(@"%@", builtInMicPort.channels);
NSLog(@" dataSources:\n");
NSLog(@"%@", builtInMicPort.dataSources);
NSLog(@"%@", builtInMicPort.preferredDataSource);
NSLog(@"%@", builtInMicPort.selectedDataSource);
if (builtInMicPort) {
for (AVAudioSessionDataSourceDescription* source in builtInMicPort.dataSources) {
if ([source.orientation isEqual:AVAudioSessionOrientationBack]) {
backDataSource = source;
break;
}
} // end data source iteration
if (backDataSource) {
NSError* theError = nil;
result = [builtInMicPort setPreferredDataSource:backDataSource error:&theError];
if (result) {
if (error) NSLog(@"ERROR SETTING PREFERRED DATA SOURCE! %ld", (long)error.code);
}
}
}
NSLog(@"Current route:\n");
NSLog(@"%@", [[AVAudioSession sharedInstance] currentRoute]);
我的問題是,打開/關閉話筒,我覺得你的代碼是讓麥克風類型背底部。 – krish
結帳此鏈接https://developer.apple.com/reference/avfoundation/avaudiosession –