开始播放时声音随机中断

Posted

技术标签:

【中文标题】开始播放时声音随机中断【英文标题】:Sounds randomly interrupted when starting to play 【发布时间】:2010-01-13 17:05:04 【问题描述】:

我从下面的代码中调用 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】:

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

【讨论】:

以上是关于开始播放时声音随机中断的主要内容,如果未能解决你的问题,请参考以下文章

按下按钮时播放随机声音[重复]

在 Mac 上使用 OpenAL 播放音频时出现随机噪音

播放随机声音而不重复

如何使用 SoundPool 播放随机声音?

SoundPool 项目在触发时随机播放/不播放

随机播放声音