-1

我正在使用AVFoundation framework播放声音。在文件的开头,我有:

#import <AVFoundation/AVAudioPlayer.h>

并且AVFoundation framework已正确添加到我的项目中。但是,当我使用此代码播放声音时,应用程序崩溃:

NSString *pathForBgMusicFile = [[NSBundle mainBundle] pathForResource:@"ClenchedTeeth" ofType:@"mp3"];
NSURL *bgMusicFile = [[NSURL alloc] initFileURLWithPath:pathForBgMusicFile];
AVAudioPlayer *bgMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:bgMusicFile error:NULL];
[bgMusic play];

有谁知道如何解决这一问题?提前致谢!

4

3 回答 3

1
#import <AudioToolbox/AudioToolbox.h>

并在 your.m 文件中

FBundleRef mainBundle = CFBundleGetMainBundle();
        CFURLRef soundFileURLref;
        soundFileURLref = CFBundleCopyResourceURL(mainBundle ,(CFStringRef)@"yourSoundFile",CFSTR ("wav"),NULL);
        UInt32 soundID;
        AudioServicesCreateSystemSoundID(soundFileURLref, &soundID);
        AudioServicesPlaySystemSound(soundID);}

如果是您的情况,您可以在按钮内使用此代码。不要忘记添加音频工具框架​​。祝你好运

于 2012-05-22T19:20:36.223 回答
0

我不在我的mac前,试试这个(我只改变了第二行):

NSString *pathForBgMusicFile = [[NSBundle mainBundle] pathForResource:@"ClenchedTeeth" ofType:@"mp3"];
NSURL *bgMusicFile = [NSURL fileURLWithPath:pathForBgMusicFile];
AVAudioPlayer *bgMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:bgMusicFile error:NULL];
[bgMusic play];
于 2012-05-22T18:08:37.520 回答
0

AVAudioSession在尝试播放之前尝试设置。像这样:

  AVAudioSession *audioSession = [AVAudioSession sharedInstance];
  audioSession.delegate = self;
  [audioSession setActive:YES error:nil];
  [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

请记住导入它,并确保您的类同时实现AVAudioPlayerDelegateAVAudioSessionDelegate

于 2012-05-22T19:23:13.603 回答