2013-05-08 103 views
3

我在这里找到了很多解决方案,但是由于某些原因,所有这些解决方案都无法产生任何声音。如何在iOS中播放声音?

这里是我当前的代码:

PRE: I've added AudioToolbox.framework and imported <AVFoundation/AVFoundation.h> in my .m file 


- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSURL* sndurl = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"aif"]; 
    SystemSoundID snd; 
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)sndurl, &snd); 
    AudioServicesAddSystemSoundCompletion(snd, nil, nil, SoundFinished, nil); 
    AudioServicesPlaySystemSound(snd); 
} 

void SoundFinished (SystemSoundID snd, void* context) { 
     AudioServicesRemoveSystemSoundCompletion(snd); 
     AudioServicesDisposeSystemSoundID(snd); 
} 

该解决方案是直出书。但是当我运行该项目时,如果不能产生任何声音。我的文件是test.aif,长度为5秒。

任何建议为什么它不起作用?如果这不是最好的解决方案,你如何在iOS6上制作声音?

+1

确保硬件静音开关已关闭。系统声音在无声模式下关闭。 – 2013-05-08 21:13:11

回答

6

根据this topic等,播放音频片段可以像下面这样简单,我使用的方法(函数)。我自己做过。

- (void)playAudio { 
    [self playSound:@"pageflip1" :@"wav"]; 
} 

- (void)playSound :(NSString *)fName :(NSString *) ext{ 
    SystemSoundID audioEffect; 
    NSString *path = [[NSBundle mainBundle] pathForResource : fName ofType :ext]; 
    if ([[NSFileManager defaultManager] fileExistsAtPath : path]) { 
     NSURL *pathURL = [NSURL fileURLWithPath: path]; 
     AudioServicesCreateSystemSoundID((__bridge CFURLRef) pathURL, &audioEffect); 
     AudioServicesPlaySystemSound(audioEffect); 
    } 
    else { 
     NSLog(@"error, file not found: %@", path); 
    } 
} 
+0

您的代码返回路径变量的“(空)”。我无法弄清楚为什么。 – 2013-05-08 21:59:51

+0

将您的音频文件拖放到项目边栏中。 – 2013-05-08 22:04:31

+0

感谢!我认为添加文件时没有选择“添加到目标”复选框。它应该被选中。 – 2013-05-08 22:08:15

0

请务必尝试在实际设备上测试它,因为模拟器在使用AVFoundation时可能会遇到问题。