2015-08-24 91 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

作爲「文件名」,你傳入了什麼值? – Nerrolken

+0

編輯:文件名= Mummy.mp3 – JKX

回答

4

嘗試

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]; 

文檔使用下面的代碼

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。編輯我的答案。 – Rajat

+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; 
相關問題