我在UIImagePicker上有一个按钮,我希望它在点击时发出一些声音。 为此,我在我的项目资源中有m4a和mp3格式的声音(用于测试目的)。
我尝试通过多种方式播放声音,尝试使用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");
}
你能告诉我出了什么问题吗?
答案 0 :(得分:6)
您无法将MP3与音频服务配合使用。它必须是某个子类型的WAV文件。对于AVAudioPlayer
,它支持MP3文件,但是当AVAudioPlayer
被取消分配时,它会停止播放,因为您在发送-play
后立即这样做(通过发送-release
来平衡+alloc
{1}}),你什么都听不到。
因此要么将文件转换为WAV,要么将AVAudioPlayer
挂到{{1}}上足以让它播放。 :)