AVAudioSession: Lecture audio via le haut-parleur de l'écouteur

J'essaie de jouer un audio à travers le haut-parleur de l'écouteur et ça fonctionne bien. Le même code ne fonctionne pas dans la situation suivante.

  1. ouvrir la camera pour save une video
  2. Au lieu de commencer l'logging, annulez
  3. Ensuite, en essayant de jouer un audio à travers l'écouteur ne fonctionne pas. Il joue à travers le haut-parleur principal

Voici mon code pour jouer de l'audio à travers l'écouteur.

-(void)initialAVaudioPlayer { if (player==nil) { NSError *error = nil; AVAudioSession *session = [AVAudioSession sharedInstance]; [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error]; [session setActive: YES error:nil]; AVAudioSessionPortDescription *routePort = session.currentRoute.outputs.firstObject; NSSsortingng *portType = routePort.portType; if ([portType isEqualToSsortingng:@"Receiver"]) { [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error]; } else { [session overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error]; } NSSsortingng *path; NSError *err; NSSsortingng *name; name = @"referenceaudio"; path = [[NSBundle mainBundle] pathForResource:name ofType:@"wav"]; if ([[NSFileManager defaultManager]fileExistsAtPath:path]) { NSURL *url = [NSURL fileURLWithPath:path]; player = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:&err]; if (!err) { player.numberOfLoops = -1; } else{ //NSLog(@"%@",[err description]); } } } } 

Voici le code, tandis que l'user appuie sur annuler,

 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { NSLog(@"here"); [self dismissViewControllerAnimated:YES completion:nil]; } 

Changer la route audio pour annuler le button résoudre le problème

 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { NSError *error = nil; AVAudioSession *session = [AVAudioSession sharedInstance]; [session setCategory:AVAudioSessionCategoryPlayback error:&error]; [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil]; [session setActive: YES error:nil]; videoPicker = nil; [self dismissViewControllerAnimated:YES completion:nil]; }