2010-01-13 5 views
1

J'appelle playSoundFromBundle du code ci-dessous pour jouer des sons (fichiers aif). J'ai un son qui fait un clic, puis un son qui s'estompe. Les deux sons sont dans le même fichier. Parfois, je reçois deux clics puis le fondu. Signification, cliquez, cliquez ... fondu. Un seul clic n'est pas ce qui devrait jouer. Je devine que le son commence (clique sur le son), s'interrompt puis redémarre (son plein ... clic/fondu) à cause d'autres traitements qui peuvent être en cours. Il semble aléatoire quand cela se produira. Je mets le son sur son propre fil pour essayer d'éviter le double clic. Y a-t-il autre chose que je puisse faire pour que le son soit correctement joué?Les sons sont aléatoirement interrompus quand je commence à jouer

- (void) playSoundFromBundleThreaded:(NSArray*)arr{ 
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
NSString *fileName = (NSString*)[arr objectAtIndex:0]; 
NSString *fileExt = (NSString*)[arr objectAtIndex:1]; 
NSError *err; 
AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: fileName ofType: fileExt inDirectory:@"/"]] error: &err]; 
self.audioPlayer = newPlayer; 
self.audioPlayer.numberOfLoops = 0; 
self.audioPlayer.volume = .5; 

if (self.audioPlayer == nil) 
{ 
    NSLog(@"Problem initializing Sound - %@", [err description]); 
} 
else 
{ 
    [self.audioPlayer play]; 
} 
[newPlayer release]; 
[pool release]; 
} 

- (void) playSoundFromBundle:(NSString*)fileName fileExtension:(NSString*)fileExt{ 
NSArray *arr = [NSArray arrayWithObjects:fileName, fileExt, nil]; 
[NSThread detachNewThreadSelector: @selector(playSoundFromBundleThreaded:) toTarget:self withObject:arr]; 
} 

Répondre

1

Aucune idée si cela fonctionnerait, mais jetez un coup d'œil à la section Session audio. Il est destiné à gérer des choses comme si la lecture d'autres sons (tels que par le lecteur de musique) va interrompre l'audio de votre application.

Questions connexes