2011-03-12 152 views
0

我在UIImagePicker上有一個按鈕,我想讓它在點擊時發出一些聲音。 爲此,我在我的項目資源中提供了m4a和mp3格式的聲音(用於測試目的)。iPhone - 聲音不能播放AudioServicesPlaySystemSound和AVAudioPlayer

我嘗試以多種方式播放聲音,嘗試使用m4a和mp3格式,但沒有任何東西從iPhone(不是模擬器)中消失。

框架包含在項目中。

這裏是我的示例代碼:

#import <AudioToolBox/AudioToolbox.h> 
#import <AVFoundation/AVAudioPlayer.h> 

- (IBAction) click:(id)sender { 
// Try 
/* 
    SystemSoundID train; 
    AudioServicesCreateSystemSoundID(CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("TheSound"), CFSTR("mp3"), NULL), &train); 
    AudioServicesPlaySystemSound(train); 
*/ 

// Try 
/* 
    NSError *error; 
    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource: @"TheSound" withExtension: @"mp3"] error:&error]; 
    [audioPlayer play]; 
    [audioPlayer release]; 
*/ 

// Try (works) 
    //AudioServicesPlayAlertSound(kSystemSoundID_Vibrate); 

// Try 
/* 
    SystemSoundID soundID; 
    NSURL *filePath = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"TheSound" ofType:@"mp3"] isDirectory:NO]; 
    AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID); 
    AudioServicesPlaySystemSound(soundID); 
*/ 

    NSLog(@"Clicked"); 
} 

你能告訴我是什麼問題呢?

回答

6

您不能在音頻服務中使用MP3。它必須是某個子類型的WAV文件。至於AVAudioPlayer,它支持MP3文件,但當AVAudioPlayer被解除分配時,它會停止播放,並且因爲您在發送-play(通過發送-release來平衡+alloc)之後立即這樣做,您從未聽到任何聲音。

因此,無論是將文件轉換爲WAV,或掛到您的AVAudioPlayer足夠長的時間來播放。 :)

+0

就是這樣,非常感謝你 – Oliver 2011-03-12 14:51:01

相關問題