声音在 iPhone 模拟器中不起作用?

问题描述 投票:0回答:9

我的 iPhone 模拟器无法播放声音。首先,我正在使用

AudioServicesPlaySystemSound()
开发的一个应用程序停止工作了。我花了一段时间调试它,但当我在设备上运行该应用程序时,声音仍在 iPhone 上运行。我在其他 iPhone 应用程序(例如 Crash Landing 示例应用程序)中得到了相同的结果。

我在模拟器或 Xcode 首选项中的任何地方都找不到声音设置。我试过通过“重置内容和设置”菜单项重置模拟器无济于事。

iphone xcode audio cocoa-touch ios-simulator
9个回答
76
投票

在您的 Mac 上,转到“系统偏好设置”>“声音”>“音效”,然后取消选中并重新选中“播放用户界面音效”。

您需要重新激活您的系统声音,请参阅this页面的末尾。


23
投票

我在模拟器里没有声音,所以我用mobile safari测试了一下,试了一下播放mp3:没有声音!

以上所有提示均无济于事。最终,我将我的 INPUT 源从虚拟 soundflower 设备更改为 Line-In,并且模拟器工作了!

因此,即使应用程序不使用输入,它也不能很好地与 Soundflower 配合使用。


4
投票

我在从 OSX10.5.7 更新到 10.6.2 后看到了这个问题

并且我做了以下改动让模拟器重新唱歌: 转到“应用程序/实用程序”并运行“音频 MIDI 设置”,然后将 midi 格式从 48000 更改为 44100。


3
投票

OpenAL 在模拟器上不工作已通过 2.1 SDK 修复。确保 Active SDK Active Executable 设置为 2.1.

顺便说一句,请确保您使用的是最新版本的 CrashLanding (v1.8)。最近修复了 SoundEngine 中的一些严重漏洞。


3
投票

我发现模拟器(2.1 SDK)中的声音非常不一致。有时有效,有时无效。即使它确实有效,它通常也非常不稳定和失真(在播放 mp3 等音频文件时)。

需要记住的几件事:

  • 在您的应用程序完成启动后立即致电
    AudioSessionInitialize
  • 通过
    kAudioSessionProperty_AudioCategory
    为会话设置
    AudioSessionSetProperty
    属性(值如
    kAudioSessionCategory_MediaPlayback
  • 电话
    AudioSessionSetActive(YES)

当然,当所有其他方法都失败时,只需在您的硬件上运行它!

编辑:既然 2.2 SDK 已经发布,我在模拟器中的声音没有任何问题。他们一定已经修复了错误!我强烈建议您升级到 2.2 SDK。


2
投票

如果重新激活系统声音对您不起作用,请尝试以下操作: 启动 audio-midi-setup,然后将“内置输出”配置为使用 44.100Hz、2 通道、24 位。 (来自http://www.cocos2d-iphone.org/forum/topic/4159

不知何故几天后,我的 iPhone 模拟器现在需要 48.000Hz、2 个通道、24 位。 稍微玩一下,注意它可能会在插入耳机、进入待机、重启等时随机变化。

这里有一个题外话提示:当您将耳机插入 iphone/ipad 时,缓冲区大小可能会增加一倍(例如,从 512 字节到 1024 字节),确保您不依赖于您请求的缓冲区大小!


1
投票

以下是声音可能无法在模拟器设备上播放的另外两个可能原因:

  1. 使用 Xcode 14.2 和运行 iPadOS 16 / iOS 16 的模拟器,我注意到声音在 iPad 模拟器上播放,但不是 iPhone 模拟器。原来这和
    AVAudioSession.Category
    被设置在
    AVAudioSession
    上有关。如果类别是
    .ambient
    那么声音会在 iPad 上播放而不是 iPhone 模拟器,如果类别是
    .playback
    那么它会在两者上播放。有趣的是,这似乎不是 iOS 15 的问题,这里
    .ambient
    类别也在 iPhone 模拟器上播放。
  2. 如果您正在调用
    AVAudioPlayer.play(atTime: TimeInterval)
    ,那么您传入的
    TimeInterval
    必须晚于设备的当前时间。传递 0 将不起作用,只会播放任何内容。即使传递一个值 > 0 也可能什么都不播放,您需要将时间偏移添加到播放器上的
    deviceCurrentTime
    。有关示例,请参阅相关文档。这当然也适用于真实设备,而不仅仅是模拟器。

0
投票

我在运行 watchOS 模拟器时遇到了这个问题。就我而言,以下方法有效:

  • 关闭没有声音的模拟器
  • 打开另一个 watchOS 模拟器。
  • 关闭它并重新打开原来的。

0
投票

我的症状是:

  • 我的应用程序的声音在 iPad 模拟器中播放,但在 iPhone 模拟器中没有
  • iPhone 模拟器声音在其他方面还可以,例如Safari 中的 YouTube

iPhone 模拟器的静音模式似乎有一个错误。为了解决这个问题,我打开静音模式然后再次关闭:

  1. 在模拟器菜单中,打开Window > Show Device Bezels.
  2. 挡板显示硬件按钮。找到静音模式开关,点两下
  3. 如果愿意,再次隐藏边框。

感谢Benzy Neez 的回答 提示该问题与

AVAudioSession.Category.ambient
相关。

© www.soinside.com 2019 - 2024. All rights reserved.