我是iOS的新手并试图为我的应用添加声音。我已经关注了几个关于向我的项目添加一个简单声音文件的教程,但是所有结果都相同。我没有错误,但没有声音播放。关于我做错了什么的任何想法?任何帮助,将不胜感激!
- (IBAction)playSound:(id)sender {
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
NSLog(soundFilePath);
NSError *error;
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:&error];
player.numberOfLoops = 1;
[player play];
}
的 的 ** 更新的 * **
所以我从来没有对上面的代码感到非常幸运,这是非常令人沮丧的,但我确实最终使用AudioToolbox框架让它工作,使用这个:
SystemSoundID soundID;
NSString *soundFile = [[NSBundle mainBundle]
pathForResource:@"test" ofType:@"mp3"];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)
[NSURL fileURLWithPath:soundFile], & soundID);
AudioServicesPlaySystemSound(soundID);
任何人都可以向我解释这个差异,为什么这个有效,另一个没有?我比什么都好奇。希望得到一些澄清。
答案 0 :(得分:9)
终于明白了。我需要在头文件中为AVAudioPlayer创建一个属性,以使其工作。这是我做的:
// .h file
@interface ThirdViewController : UIViewController {
AVAudioPlayer *audioPlayer;
}
@property (nonatomic, retain) AVAudioPlayer *audioPlayer;
- (void) playSound //method in .m file
{
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"test"
ofType:@"mp3"]];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
[audioPlayer play];
}
答案 1 :(得分:0)
通过执行以下操作简化您的代码。同时将test.mp3删除到xcode中项目目录的根目录。您的mp3位置和位置非常重要。此外,还要确保音量正常,并且您的设备不会振动,并且它已取消静音。
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"test"
ofType:@"mp3"]];
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:url
error:nil];
[audioPlayer play];
答案 2 :(得分:0)
确保安装quartz.h或支持音频播放器的特定框架。只需仔细检查。
一段时间后出现同样的问题,必须正确安装框架。