在iPhone SDK中播放声音?

时间:2010-03-20 14:56:03

标签: iphone xcode iphone-sdk-3.0 audio

有没有人使用可用于播放短音的AudioToolBox框架的片段?如果您与我和社区其他成员分享,我将不胜感激。我看过的其他任何地方的代码似乎都不太清楚。

谢谢!

3 个答案:

答案 0 :(得分:11)

以下是使用AVAudioPlayer的简单示例:

-(void)PlayClick
{
    NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
                                               pathForResource:@"click"
                                               ofType:@"caf"]];
    AVAudioPlayer *click = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil];
    [click play];
    [click release];
}

这假定主捆绑中有一个名为“click.caf”的文件。当我播放这个声音很多时,我实际上是把它放在以后播放它而不是释放它。

答案 1 :(得分:7)

我在AudioServicesPlaySystemSound和朋友们写了一个简单的Objective-C包装器:

#import <AudioToolbox/AudioToolbox.h>

/*
    Trivial wrapper around system sound as provided
    by Audio Services. Don’t forget to add the Audio
    Toolbox framework.
*/

@interface Sound : NSObject
{
    SystemSoundID handle;
}

// Path is relative to the resources dir.
- (id) initWithPath: (NSString*) path;
- (void) play;

@end

@implementation Sound

- (id) initWithPath: (NSString*) path
{
    [super init];
    NSString *resourceDir = [[NSBundle mainBundle] resourcePath];
    NSString *fullPath = [resourceDir stringByAppendingPathComponent:path];
    NSURL *url = [NSURL fileURLWithPath:fullPath];

    OSStatus errcode = AudioServicesCreateSystemSoundID((CFURLRef) url, &handle);
    NSAssert1(errcode == 0, @"Failed to load sound: %@", path);
    return self;
}

- (void) dealloc
{
    AudioServicesDisposeSystemSoundID(handle);
    [super dealloc];
}

- (void) play
{
    AudioServicesPlaySystemSound(handle);
}

@end

生活here。有关其他声音选项,请参阅this question

答案 2 :(得分:2)

来源AudioServices - iPhone Developer Wiki

AudioService声音与设备音量控制器无关。即使手机处于静音模式,也会播放音频服务声音。这些声音只能通过设置 - &gt;静音。 声音 - &gt; Ringer and Alerts

可以通过以下代码播放自定义系统声音:

CFBundleRef mainbundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef = CFBundleCopyResourceURL(mainbundle, CFSTR("tap"), CFSTR("aif"), NULL);
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundFileObject);

在iPhone中调用振动

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

播放内置系统声音。

AudioServicesPlaySystemSound(1100);