0

我将文件 audio.wav 上传到我的支持文件夹中。

这是我的 PlayAudio.h

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

@interface PlayAudio : UIViewController {

}

-(IBAction) PlayIt;

@end

这是我的 PlayAudio.m 执行后的命令

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

}

然后我在我的视图控制器中按住 ctrl 从播放按钮单击到 First Responder 并选择 PlayIt。我看到它与 Touch Up Inside 有关。

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

4

1 回答 1

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。

于 2012-07-23T12:07:50.790 回答