Je commence à être convaincu que iOS n'est que de la pure magie. J'ai regardé de nombreux messages sur AVAudioPlayer pour trouver des solutions, mais aucun n'a fonctionné.AVAudioPlayer ne se met pas en mode silencieux lorsque le mode SilentMode est activé
Lorsque l'application démarre j'ai un film à partir de de MPMoviePlayerController et je AVAudioPlayer le coup d'envoi avec un son comme suit:
-(void)createAndPlayMovieFromURL:(NSURL *)movieURL sourceType:(MPMovieSourceType)sourceType{
/* Create a new movie player object. */
player = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
player.controlStyle = MPMovieControlModeDefault;
if (player)
{
/* Save the movie object. */
[self setMoviePlayerController:player];
/* Specify the URL that points to the movie file. */
[player setContentURL:movieURL];
/* If you specify the movie type before playing the movie it can result
in faster load times. */
[player setMovieSourceType:sourceType];
CGRect frame = CGRectMake(0, 0, 480, 320);
/* Inset the movie frame in the parent view frame. */
[[player view] setFrame:frame];
[player view].backgroundColor = [UIColor blackColor];
/* To present a movie in your application, incorporate the view contained
in a movie player’s view property into your application’s view hierarchy.
Be sure to size the frame correctly. */
[self.view addSubview: [player view]];
}
[[self moviePlayerController] play];
}
et pour le son:
- (void)setupAudioPlayBack:(NSString *) path : (NSString *) extension{
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:path
ofType:extension]];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:url
error:&error];
if (error)
{
NSLog(@"Error in audioPlayer: %@",
[error localizedDescription]);
} else {
audioPlayer.delegate = self;
[audioPlayer prepareToPlay];
}
}
Et laisse maintenant parler la magie. Lorsque le premier film est lu et le son, le son ne répond ni aux commandes de volume du téléphone, ni au commutateur Silent Mode On.
Mais immédiatement un deuxième film joue avec son propre son et tout fonctionne bien - il n'y a pas de son avec le mode silencieux activé, si le mode silencieux désactivé répond aux commandes de volume. 3ème film - joue parfaitement aussi. J'ai essayé d'utiliser le player.useApplicationAudioSession = NO
pour MPMoviePlayerController - résolu le problème avec le premier son ne répondant pas au mode silencieux ou aux contrôles de volume, mais maintenant quand le second film commence à jouer, il se fige instantanément et le son joué est coupé de l'original taille à quelque chose autour de 2 secondes.
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient error:nil];
n'a pas aidé non plus où que je l'ai défini.
Donc ma question est - comment faire interagir avec l'MPMoviePlayerController AVAudioPlayer sans aucun problème ...
J'ai trouvé cela utile, merci. –