2013-05-08 3 views
3

Я нашел так много решений здесь, в stackoverflow, но по какой-то причине все они не смогли создать какой-либо звук, какой бы он ни был.Как играть в iOS?

Вот мой текущий код:

PRE: I've added AudioToolbox.framework and imported <AVFoundation/AVFoundation.h> in my .m file 


- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSURL* sndurl = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"aif"]; 
    SystemSoundID snd; 
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)sndurl, &snd); 
    AudioServicesAddSystemSoundCompletion(snd, nil, nil, SoundFinished, nil); 
    AudioServicesPlaySystemSound(snd); 
} 

void SoundFinished (SystemSoundID snd, void* context) { 
     AudioServicesRemoveSystemSoundCompletion(snd); 
     AudioServicesDisposeSystemSoundID(snd); 
} 

Это решение прямо из книги. Но когда я запускаю проект, если не получается звук. Мой файл test.aif, который длится 5 секунд.

Любые предложения, почему это не работает? Если это не лучшее решение, как вы создаете звук на iOS6?

+1

Убедитесь, что переключатель отключения звука отключен. Системные звуки отключены в бесшумном режиме. – 2013-05-08 21:13:11

ответ

6

Согласно this topic и другим, воспроизведение аудиоклипа может быть таким простым, как следующее, с использованием метода (функции). Я сделал это перед собой.

- (void)playAudio { 
    [self playSound:@"pageflip1" :@"wav"]; 
} 

- (void)playSound :(NSString *)fName :(NSString *) ext{ 
    SystemSoundID audioEffect; 
    NSString *path = [[NSBundle mainBundle] pathForResource : fName ofType :ext]; 
    if ([[NSFileManager defaultManager] fileExistsAtPath : path]) { 
     NSURL *pathURL = [NSURL fileURLWithPath: path]; 
     AudioServicesCreateSystemSoundID((__bridge CFURLRef) pathURL, &audioEffect); 
     AudioServicesPlaySystemSound(audioEffect); 
    } 
    else { 
     NSLog(@"error, file not found: %@", path); 
    } 
} 
+0

Ваш код возвращает '(null)' для переменной пути. Я не могу понять, почему. –

+0

Перетащите аудиофайл в боковую панель проекта. –

+0

СПАСИБО! Я понял, что флажок «Добавить в целевые объекты» не был выбран при добавлении файлов. Он ДОЛЖЕН быть выбран. –

0

Не забудьте проверить его на самом устройстве, потому что у симулятора могут быть проблемы при использовании AVFoundation.

Смежные вопросы