Воспроизведение звуков в iPhone SDK? - PullRequest
7 голосов
/ 20 марта 2010

Есть ли у кого-нибудь фрагмент кода, использующий платформу AudioToolBox, которую можно использовать для воспроизведения короткого звука? Я был бы признателен, если бы вы поделились этим со мной и остальной частью сообщества. Везде, где я смотрел, не слишком ясно с их кодом.

Спасибо!

Ответы [ 3 ]

11 голосов
/ 20 марта 2010

Вот простой пример использования 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" доступен в основном комплекте. Поскольку я много играю этот звук, я фактически держу его рядом, чтобы воспроизвести позже, вместо того, чтобы выпустить его.

7 голосов
/ 20 марта 2010

Я написал простую оболочку Objective-C для AudioServicesPlaySystemSound и друзей:

#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

Живет здесь . Для других вариантов звука см этот вопрос .

2 голосов
/ 04 июля 2012

Источник : AudioServices - iPhone Developer Wiki

Звуки AudioService не зависят от контроллера громкости устройства. Даже если телефон находится в беззвучном режиме, будут воспроизводиться звуки аудиосервиса. Эти звуки можно отключить, только нажав Настройки -> Звуки -> Звонок и оповещения .

Пользовательские системные звуки могут воспроизводиться с помощью следующего кода:

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

Вызов вибрации в iPhone

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

Воспроизведение встроенных системных звуков.

AudioServicesPlaySystemSound(1100);
...