2013-01-13 270 views
3

我想在按下按鈕時播放聲音。我嘗試這樣做:在IOS上播放聲音

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

...和進口#import <AudioToolbox/AudioToolbox.h>#import <AVFoundation/AVFoundation.h>

但由於某些原因的聲音是不是在玩。名稱和類型是正確的,因爲我添加到項目中的文件是「BubblePopv4.mp3」。 iPad上的音量最大,並且iTunes上的聲音播放良好!有任何想法嗎?

+0

由代碼調用,因爲我能方式請參閱NSLog – Alessandro

+0

iPhone是否進入無聲(振動器)模式?如果我的記憶是正確的,AVAudioPlayer將不會播放,如果它在這種模式下。 – Larme

回答

3

離開它,不要爲你做一個新的類,簡單的東西:

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

    // Eg - abc.mp3 
    AVAudioPlayer *audioPlayerObj; 

    NSString *filePath; 

    filePath= [[NSString stringWithFormat:@"%@", [[NSBundle mainBundle] resourcePath]] retain]; 

    if(!audioPlayerObj) 
     audioPlayerObj = [AVAudioPlayer alloc]; 

     NSURL *acutualFilePath= [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@",filePath,fileNameWithExtension]]; 

     NSError *error; 

     [audioPlayerObj initWithContentsOfURL:acutualFilePath error:&error]; 

     [audioPlayerObj play]; 

} 
+0

,然後按[自playSoundWithOfThisFile] ?? – Alessandro

+0

是[自playSoundWithOfThisFile:@」 abcd.mp3" ]; –

+0

但它不起作用!!代碼沒有給出任何錯誤,除了[audioPlayerObj initWithContentsOfURL:acutualFilePath錯誤:&error]中的錯誤;這是「表達式結果未使用」 – Alessandro

1

這樣做:

在.h文件中:

Use this delegate - <AVAudioPlayerDelegate> 

#import "AVFoundation/AVAudioPlayer.h" 

AVAudioPlayer *audioPlayerObj; 

NSString *filePath; 

在.m文件,在一些方法:

filePath= [[NSString stringWithFormat:@"%@", [[NSBundle mainBundle] resourcePath]] retain]; 

    if(!audioPlayerObj) 
     audioPlayerObj = [AVAudioPlayer alloc]; 

並添加這兩種方法:

- (id)initWithFileName:(NSString*)fileNameWithExtension { 

    if ((self = [super init])) { 

     NSURL *acutualFilePath= [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@",filePath,fileNameWithExtension]]; 

     NSError *error; 

     [audioPlayerObj initWithContentsOfURL:acutualFilePath error:&error]; 

    } 
    return self; 
} 

- (void)playSound { 
    [audioPlayerObj play]; 
} 

你可以傳遞文件名到這個方法od - initWithFileName

然後調用playSound方法爲您播放聲音。

希望這會有所幫助。

+0

我怎樣才能打電話給我的視圖控制器的contorller? – Alessandro

0

替換URL初始化:

NSURL* musicFile = [NSURL initFileURLWithPath:[[NSBundle mainBundle] 
               pathForResource:@"BubblePopv4" 
               ofType:@"mp3"]]; 
+0

這給我的錯誤 「的選擇無類法 'initfileURLwithPath' – Alessandro

+0

是 'initFileURLWithPath' 而不是 'initfileURLwithPath' –