3

我是 iOS 新手,正在尝试为我的应用程序添加声音。我已经遵循了几个关于在我的项目中添加一个简单的声音文件的教程,但结果都是一样的。我没有错误,但没有声音播放。关于我做错了什么的任何想法?任何帮助,将不胜感激!

- (IBAction)playSound:(id)sender {

    NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
    NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
    NSLog(soundFilePath);

    NSError *error;
    AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:&error];
    player.numberOfLoops = 1; 

    [player play];

 }

**更新* **

所以我对上面的代码从来没有任何运气,这非常令人沮丧,但我最终还是使用 AudioToolbox 框架让它工作,使用这个:

SystemSoundID soundID;
NSString *soundFile = [[NSBundle mainBundle]
                       pathForResource:@"test" ofType:@"mp3"];
AudioServicesCreateSystemSoundID((__bridge  CFURLRef)
                                 [NSURL fileURLWithPath:soundFile], & soundID);
AudioServicesPlaySystemSound(soundID);

谁能向我解释其中的区别,为什么这个有效而另一个无效?我比什么都好奇。希望得到一些澄清。

4

3 回答 3

9

终于想通了。我需要在我的头文件中为 AVAudioPlayer 创建一个属性才能让它工作。这是我所做的:

// .h file
@interface ThirdViewController : UIViewController {

    AVAudioPlayer *audioPlayer;

}
@property (nonatomic, retain) AVAudioPlayer *audioPlayer;



- (void) playSound     //method in .m file
{
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
                                          pathForResource:@"test" 
                                          ofType:@"mp3"]];
    NSError *error;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    [audioPlayer play];
}
于 2013-03-27T19:20:33.723 回答
0

确保安装了quartz.h,或支持音频播放器的特定框架。仔细检查一下。

不久前有同样的问题,必须正确安装框架。

于 2013-05-30T14:25:54.123 回答
0

通过执行以下操作来简化您的代码。还将您的 test.mp3 放到 xcode 中项目目录的根目录中。您的 mp3 放置和位置非常重要。还要确保音量已调高,振动已关闭您的设备,并且已取消静音。

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                     pathForResource:@"test"
                                     ofType:@"mp3"]];

AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc]
                              initWithContentsOfURL:url
                              error:nil];
[audioPlayer play];
于 2013-03-25T19:13:57.147 回答