Mam odtwarzacz audio, który ma opcję przełączania wyjścia audio z głośnika na odbiornik/słuchawkę (niezależnie od tego, czy zestaw słuchawkowy jest podłączony), gdy czujnik zbliżeniowy powiadomi 1. Poniżej znajduje się mój kod.Przełączanie wyjścia audio między odbiornikiem i głośnikiem w systemie iOS7 i nowszych wersjach?
- (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");
}
}
ta została oparta na odpowiedź Toggle Button route audio to speaker and receiver i enter link description here. Zauważyłem, że to tylko zmusza audio do głośnika sam, ale nie zapewnia, że trasa przechodzi do samego odbiornika. Ponadto podczas przechodzenia do głośnika pojawia się następujący błąd:
AVAudioSession error overrideOutputAudioPort:Error Domain=NSOSStatusErrorDomain Code=-50 "The operation couldn’t be completed. (OSStatus error -50.)"
Ja też czuło dokładnie ten sam błąd. Czy ktoś zdołał rozwiązać ten problem? –