[英]Playing sound on viewDidLoad - Xcode
我在加载视图时(以及最终在此代码有效的情况下执行的其他操作)播放声音时遇到一个小问题
问题:加载视图时,声音无法在电话上播放。 但是,如果在以下位置添加断点后逐步执行代码,则可以从iPhone听到声音:
[click play]
我从在线教程中获得了以下代码,并将其复制到了我的viewDidLoad方法中:
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"States" ofType:@"mp3"]];
AVAudioPlayer *click = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil];
[click play]; // Breakpoint is here
}
我所做的事情:
如果能得到一些建议或投入尝试,我将不胜感激。 甚至是在我的应用程序中实现音频的另一种方法
谢谢。
viewDidLoad完成后,音频播放器对象“ click”将被重新分配,因为它已分配给局部变量。 您需要为播放器创建一个ivar或属性。
musicFile
不包含音乐文件(或实际上任何文件)的URL。 它包含应用程序本身的URL。 您想要做的事情更多是:
musicFile = [[NSBundle mainBundle] URLForResource:@"musicFile" withExtension:@"caf"];
另外,对于播放小型音频短片,您可能只想使用AudioServices
一次性初始化(在viewDidLoad中或静态进行):
static SystemSoundID sound;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSURL* url = [[NSBundle mainBundle] URLForResource:@"statusChanged" withExtension:@"caf"];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &sound);
});
然后播放声音:
AudioServicesPlaySystemSound(sound);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.