开始播放时声音随机中断

时间:2010-01-13 17:05:05

标签: iphone objective-c cocoa-touch avaudioplayer

我从下面的代码中调用playSoundFromBundle来播放声音(aif文件)。我有一个声音,只需单击一下,然后褪色声。两种声音都在同一个文件中。有时我会两次点击,然后是淡入淡出。意思是,单击,单击...淡出。单击不是应该播放的内容。由于可能正在进行的其他处理,我猜测声音开始(单击声音),被中断然后重新启动(完整声音...单击/淡入淡出)。它会发生时似乎是随机的。我把声音放在自己的线程上试图避免双击。还有什么我可以做的,以确保声音正确播放?

- (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];
}

1 个答案:

答案 0 :(得分:1)

不知道这是否有用,但请查看音频会话内容。它旨在管理诸如播放其他声音(例如音乐播放器)是否会中断应用程序中的音频之类的事情。