不知何故,我的iPhone模拟器无法播放声音。我正在开发一个使用AudioServicesPlaySystemSound()
的应用程序,但它已经停止工作了。我花了很长时间来调试这个问题,但是当我在设备上运行该应用程序时,iPhone上的声音仍然正常工作。我在其他iPhone应用程序中也得到了相同的结果,例如示例Crash Landing应用程序。
我无法在模拟器或Xcode首选项中找到任何声音设置。我尝试通过“重置内容和设置”菜单项重置模拟器,但并没有用。
不知何故,我的iPhone模拟器无法播放声音。我正在开发一个使用AudioServicesPlaySystemSound()
的应用程序,但它已经停止工作了。我花了很长时间来调试这个问题,但是当我在设备上运行该应用程序时,iPhone上的声音仍然正常工作。我在其他iPhone应用程序中也得到了相同的结果,例如示例Crash Landing应用程序。
我无法在模拟器或Xcode首选项中找到任何声音设置。我尝试通过“重置内容和设置”菜单项重置模拟器,但并没有用。
模拟器没有声音,于是我在移动版 safari 上测试并尝试播放 mp3:无声!
以上所有提示都没有帮助。最终,我将输入源从虚拟的 Soundflower 设备更改为 Line-In,然后模拟器就可以使用了!
所以,即使应用程序没有使用输入,它也不能很好地与 Soundflower 一起使用。
我的症状是:
似乎iPhone模拟器中的静音模式存在一个错误。为了解决这个问题,我打开并关闭了静音模式:
AVAudioSession.Category.ambient
有关。我在将操作系统从OSX10.5.7升级到10.6.2后遇到了这个问题。
为了让模拟器再次运行,我做了以下更改: 前往"应用程序/实用工具"并运行"音频MIDI设置",然后将midi格式从48000更改为44100。
AudioSessionInitialize
- 通过AudioSessionSetProperty
设置会话的kAudioSessionProperty_AudioCategory
属性(例如使用kAudioSessionCategory_MediaPlayback
值)
- 调用AudioSessionSetActive(YES)
当然,如果所有其他方法都失败了,就在您的硬件上运行它吧!在模拟器上无法使用OpenAL的问题已经在2.1 SDK中得到了解决。请确保“Active SDK”和“Active Executable”均已设置为2.1。
另外,请确保您正在使用最新版本的CrashLanding(v1.8)。最近修复了SoundEngine中的一些恶性泄漏问题。
以下是模拟器设备上声音无法播放的另外两个可能原因:
使用 Xcode 14.2 和运行 iPadOS 16 / iOS 16 的模拟器时,我注意到声音在 iPad 模拟器上播放,但在 iPhone 模拟器上没有声音。原来这与设置在AVAudioSession
上的 AVAudioSession.Category
有关。如果类别是 .ambient
,则声音会在 iPad 上播放,但不会在 iPhone 模拟器上播放;如果类别是 .playback
,则两者都可以播放。有趣的是,这似乎对于 iOS 15 来说不是问题,这里 .ambient
类别也可以在 iPhone 模拟器上播放。AVAudioPlayer.play(atTime: TimeInterval)
,那么传递的 TimeInterval
必须晚于设备的当前时间。传递 0 不起作用,什么也不播放。即使传递一个值 > 0,也可能什么也不播放,您需要将时间偏移量添加到播放器上的 deviceCurrentTime
。请参见 相关文档 中的示例。当然,这也适用于真实设备,而不仅仅是模拟器。我在运行watchOS模拟器时遇到了这个问题。在我的情况下,以下方法有效: