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 如何导入IOS项目

如何在 Xcode 4.0.2 中使用 iOS SDK 4.2

如何使用 Xcode 在 iOS 中添加“使用 Apple 登录”功能

Xcode - 使用旧 iOS 版本运行模拟器

如何使用 Xcode 7.1 和 iOS 部署目标 iOS 7.1 启动应用程序?

Xcode 5,如何使用与 IOS 6 和 IOS 7 兼容的 UI 构建应用程序 [重复]