2012-07-23 212 views
0

我上传了一个audio.wav文件到我的支持文件文件夹中。按钮不在iOS中播放音频

这是我PlayAudio.h

#import <UIKit/UIKit.h> 
#import <AudioToolbox/AudioToolbox.h> 
#import <AVFoundation/AVFoundation.h> 

@interface PlayAudio : UIViewController { 

} 

-(IBAction) PlayIt; 

@end 

这是执行命令

- (IBAction) PlayIt; { 
    CFBundleRef mainBundle = CFBundleGetMainBundle(); 
    CFURLRef soundFileURLRef; 
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"audio", CFSTR ("wav"), NULL); 
    UInt32 soundID; 
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID); 
    AudioServicesPlaySystemSound(soundID); 

} 

我再从播放按钮按住Ctrl键点击的急救员在我看来,我的后PlayAudio.m控制器和选定的PlayIt。我看到它与Touch Up Inside相关。

出于某种原因,我可以点击按钮,但没有播放。我在Storyboard中这样做。

+0

我的一个问题是:iOS是否知道在我的项目的Supporting Files文件夹中查找“audio.wav”文件? – sal 2012-07-23 04:03:45

+0

如何尝试其他球员? – Bazinga 2012-07-23 07:06:55

+0

你的'PlayIt'实现不正确 - 你在'PlayIt'结尾处有';'。另外,请注意,Objective-C标准将使用方法名称“playIt”的初始小写字母。最后......你是否设置了断点来检查你的代码是否正在运行,并检查变量的值? – 2012-07-23 08:30:38

回答

0

您可以使用NSURL,让您的wav文件的路径,将其转换为CFURLRef,请检查下面的代码:

SystemSoundID soundID; 
NSURL *soundPath = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"audio" ofType:@"wav"]]; 
if (AudioServicesCreateSystemSoundID ((CFURLRef)soundPath, &soundID) != kAudioServicesNoError) { 
    AudioServicesPlayAlertSound(soundID); 

} 

请注意,如果在iPhone上的静音按钮使AudioServicesCreateSystemSoundID函数将失败(振动可以在这种情况下使用:soundID = kSystemSoundID_Vibrate;)。如果您想播放声音而忽略静音开关,请使用AVAudioPlayer api。