2015-08-24 1 views
1

Я рассмотрел множество ответов здесь для этого вопроса и не могу заставить их работать.Воспроизведение звука на устройстве с помощью Objective C

Вот моя проблема, я пытаюсь играть звук на нажатие кнопки, здесь, где находится файл File Location

Вот мой код

- (void)playSoundWithOfThisFile:(NSString*)fileName { 

NSString *soundFilePath = [NSString stringWithFormat:fileName, 
          [[NSBundle mainBundle] resourcePath]]; 
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath]; 

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL 
                   error:nil]; 
player.numberOfLoops = 1; 

[player play]; 

}

Когда я пропущу код, значения следующие:

fileName = Mummy.mp3 

`soundFilePath = Mummy.mp3` (I've had it Sounds/Mummy.mp3 and this doesn't work either) 

soundFileURL = Mummy.mp3 - Файл: ///

player = nil 

Любая помощь будет принята с благодарностью. Ошибка, если я поймаю это просто общая ошибка без информации

+0

Какое значение вы принимаете, например, "fileName"? – Nerrolken

+0

Отредактировано: filename = Mummy.mp3 – JKX

ответ

4

Try использовать код ниже

SystemSoundID soundID; 
NSString *soundFile = [[NSBundle mainBundle] 
         pathForResource:@"test" ofType:@"mp3"]; 
AudioServicesCreateSystemSoundID((__bridge CFURLRef) 
           [NSURL fileURLWithPath:soundFile], & soundID); 
AudioServicesPlaySystemSound(soundID); 

Не забудьте импортировать

#import <AudioToolbox/AudioToolbox.h> 
+1

Вы также должны объявить 'soundID'. – EmilioPelaez

+0

Да, вы должны объявить soundID.Edited мой ответ. – Rajat

+0

Это работает, каковы преимущества этого метода, в отличие от других, исключительно из интереса (кроме того, что он работает!) – JKX

0

Попробуйте это.

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Mummy" ofType:@"mp3"]; 

NSURL *soundFileURL = [NSURL fileURLWithPath:filePath]; 
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL 
                   error:nil]; 
player.numberOfLoops = 1; 
[player play]; 

Docs на pathForResource: ofType:

+0

Ошибка, но не воспроизведение звука – JKX

0
NSString *path = [[NSBundle mainBundle] pathForResource: @"how_to_play" ofType: @"mp3"]; 
      if(!self.theAudio) 
      { 
       self.theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
       self.theAudio.delegate = self; 
       [self.theAudio play]; 
      } 

положить в viewcontroller.h

< AVAudioPlayerDelegate> 

@property(nonatomic,strong) AVAudioPlayer *theAudio;