2010-01-13 77 views
1

我從下面的代碼調用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

不知道這是否可行,但查看音頻會話的東西。它旨在管理諸如播放其他聲音(例如音樂播放器)是否會中斷應用程序的音頻。