2012-07-23 213 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。