我希望在我的iPhone(iOS 6.1)上播放声音,具体取决于按下按钮。
转换为aif,caf,wav和压缩格式后,我无法在设备上获得声音。已检查音量,设备已重新启动,文件名中不包含大写字母。
我阅读了很多关于这个问题的主题,找不到合适的解决方案,这意味着我的问题要么更复杂,要么是愚蠢的 - 这当然是愚蠢的。
这是播放声音的代码:
// Plays sound of given filename
- (void) playSound:(NSString*)name {
SystemSoundID sound = [self createSoundID:name];
AudioServicesPlaySystemSound(sound);
NSLog(@"file played: %@",name);
}
// Creates a playable sound out of filename
-(SystemSoundID) createSoundID:(NSString*) name
{
NSString *path = [NSString stringWithFormat: @"%@/%@",
[[NSBundle mainBundle] resourcePath], name];
NSURL* filePath = [NSURL fileURLWithPath: path isDirectory: NO];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID);
return soundID;
}
答案 0 :(得分:2)
如果声音在模拟器上正常工作但在真实设备中没有,这意味着您应该打开设备的振铃和警报设置。您还应该检查静音按钮,如果它是'是否在。
答案 1 :(得分:0)
问题是调用playSound的方法没有使用NSTimer调用。似乎对于播放的声音,它们必须由应用程序的主线程调用(这似乎是合法的......)。
所以我修改了应用程序,以便主线程可以调用这些声音和瞧,它也可以在设备上运行。上面的代码是正确的。