Ich habe einen Audio-Player, der eine Option hat, den Audioausgang von Lautsprecher zu Empfänger/Ohrhörer umzuschalten (unabhängig davon, ob das Headset angeschlossen ist), wenn der Näherungssensor 1 meldet. Das Folgende ist mein Code dafür.Umschalten der Audioausgabe zwischen Receiver und Lautsprecher in iOS7 und höher?
- (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");
}
}
Dies wurde Toggle Button route audio to speaker and receiver und enter link description here auf der Antwort basiert. Mir ist aufgefallen, dass dies nur den Audio to Speaker erzwingt, aber nicht dafür sorgt, dass die Route zum Receiver alleine geht. Darüber hinaus, während an den Lautsprecher Verschieben ich die folgende Fehlermeldung erhalten:
AVAudioSession error overrideOutputAudioPort:Error Domain=NSOSStatusErrorDomain Code=-50 "The operation couldn’t be completed. (OSStatus error -50.)"
Vermeidung ich auch genau die gleichen Fehler Geting. Hat es jemand geschafft, das zu lösen? –