【发布时间】:2014-09-17 17:26:40
【问题描述】:
我正在尝试播放系统声音。使用 Xcode 6 Beta 4。代码如下:
func playKeyClick()
{
let filePath = NSBundle.mainBundle().pathForResource("Tock", ofType: "aiff")
if NSFileManager.defaultManager().fileExistsAtPath(filePath) {
println("file exists")
}
let fileURL = NSURL(fileURLWithPath: filePath)
var soundID:SystemSoundID = 0
AudioServicesCreateSystemSoundID(fileURL, &soundID)
AudioServicesPlaySystemSound(soundID)
}
它在设备上运行良好,但在模拟器中无法播放。我创建了一个测试应用程序,它只会播放这个声音,所以我认为我没有做任何事情来阻止它。
模拟器可以播放来自 Safari 应用程序的声音,所以我认为这表明它能够播放来自我的应用程序的声音。
请注意,我还有其他代码用于以其他两种方式播放声音,这些方式也适用于设备,但不适用于模拟器。为了简单起见,我选择了这个例子。
编辑 - 将文件更改为资源包以避免混淆
【问题讨论】:
-
您应该在设置该声音后断言(即 assert(soundID != 0) ),以确保其已设置。 AudioServicesCreateSystemSoundID 也返回一个 OSStatus,println 它。
-
我已经根据 sound-not-working-in-iphone-simulator answer 的建议调整了我的系统声音设置和 midi 设置。我唯一不能尝试的是为输入设置线路输入,选项不存在(改为使用麦克风)。
-
已检查 soundID,得到一个非 0 值 (4097)
-
进度 - 在尝试更改声音设置(并重新启动)后,我正在使用我的主应用程序进行测试。刚刚检查了我的测试应用程序(只做声音检查),它现在可以工作了。但是在我的主应用程序中没有相同的调用。
标签: ios swift ios-simulator