Переключение аудио выхода между ресивером и динамиком в iOS7 и выше?
У меня есть аудиоплеер, в котором есть возможность переключения аудиовыхода с динамика на ресивер / наушник (независимо от того, подключена ли гарнитура), когда датчик приближения уведомляет 1. Ниже приведен мой код для этого.
- (void) switchAudioOutput:(NSString*)output{
AVAudioSession* audioSession = [AVAudioSession sharedInstance];
BOOL success;
NSError* error;
if([output isEqualToString:keAudioOutputReciever]){
//Force current audio out through reciever
//set the audioSession override
success = [audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideNone
error:&error];
if (!success)
NSLog(@"AVAudioSession error overrideOutputAudioPort:%@",error);
//activate the audio session
success = [audioSession setActive:YES error:&error];
if (!success)
NSLog(@"AVAudioSession error activating: %@",error);
else
NSLog(@"AVAudioSession active with override: AVAudioSessionPortOverrideNone");
}else if([output isEqualToString:keAudioOutputSpeaker]){
//set the audioSession override
success = [audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker
error:&error];
if (!success)
NSLog(@"AVAudioSession error overrideOutputAudioPort:%@",error);
//activate the audio session
success = [audioSession setActive:YES error:&error];
if (!success)
NSLog(@"AVAudioSession error activating: %@",error);
else
NSLog(@"AVAudioSession active with override: AVAudioSessionPortOverrideSpeaker");
}
}
Это было основано на ответеКнопка переключения направляет звук на динамик и приемник а такжевведите описание ссылки здесь, Я заметил, что это только заставляет Audio to Speaker в одиночку, но не гарантирует, что маршрут идет только к получателю. Более того, при переходе на динамик я получаю следующую ошибку:
Ошибка AVAudioSession overrideOutputAudioPort: Error Domain = NSOSStatusErrorDomain Code = -50 "Операция не может быть завершена. (Ошибка OSStatus -50.)"