Xcode iOS:如何使用 AVFoundation 重置声音
Posted
技术标签:
【中文标题】Xcode iOS:如何使用 AVFoundation 重置声音【英文标题】:Xcode iOS: How to reset a sound once it has played using AVFoundation 【发布时间】:2011-12-21 02:20:32 【问题描述】:所以我为我工作的医院制作了一个音板,它可以播放不同的呼吸声音,供 RT 听,也可以用于继续教育和实习生。我可以停止和启动声音很好。我遇到的问题是声音何时完成。您必须点击任何按钮两次才能播放下一个声音。所以我想知道你将如何在完成后重置声音文件。我对 obj-c 很陌生,我的直觉告诉我要实现 NSTime,但是我不知道该怎么做,或者这是否是我想要做的。
提前致谢!
- (IBAction)play
if (soundIsPlaying == YES)
[audioplayer release];
soundIsPlaying = NO;
else if (soundIsPlaying == NO)
NSString *path = [[NSBundle mainBundle] pathForResource:@"breathe1" ofType:@"wav"];
audioplayer=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
audioplayer.delegate = self;
audioplayer.volume = 1.2;
audioplayer.numberOfLoops = 0;
[audioplayer play];
soundIsPlaying = YES;
【问题讨论】:
【参考方案1】:如果您使用的是 AVAudioPlayer,您可以设置一个名为 numberOfLoops 的属性。 查看 Apple 网站上的 AVAudioPlayer 类参考。
【讨论】:
我没有使用 AVAudioPlayer 但我会看看它 根据您的代码,您正在使用 AVAudioPlayer 并且您将 numberOfLoops = 0 设置为仅播放 1 次。 你知道我有什么权利......我感冒了,所以它对我的思维过程没有帮助。 没问题。很高兴能提供帮助。【参考方案2】:您可以通过实现 audioPlayerDidFinishPlaying 委托来捕捉声音文件的完成,请参阅 AVAudioPlayerDelegate:http://developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVAudioPlayerDelegateProtocolReference/Reference/Reference.html
然后您可以在该处理程序中重置/释放您的播放器。
【讨论】:
【参考方案3】:我不确定这是否会奏效,但也许你会改变
audioplayer.numberOfLoops = 0;
到
audioplayer.numberOfLoops = -1;
让它循环直到停止。
【讨论】:
一些声音文件很短。我曾想过循环直到停止,但我也不想要,因为我希望用户知道呼吸何时完成。这也有助于模式呼吸检测,但我不会详细介绍 RT 想要什么。感谢您的反馈!以上是关于Xcode iOS:如何使用 AVFoundation 重置声音的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xcode 4.0.2 中使用 iOS SDK 4.2
如何使用 Xcode 在 iOS 中添加“使用 Apple 登录”功能