2014-11-04 93 views
2

我正在测试我的audioApp在我的耳机上iPhone6 Plus,并且在插入耳机或插入耳机后发生崩溃。 AVAudioEngine,AVAudioMixer,AVAudioPlayerNode用于我的应用程序。AVAudioEngine在插入耳机或插入耳机时崩溃

没有耳机的应用程序可以从iPhone扬声器播放声音。

用耳机启动应用程序可以从耳机播放声音。

以下情况会发生错误。 在没有耳机的情况下启动应用程序并播放扬声器中的声音。然后,如果我连接耳机,则耳机没有声音。当我拔掉耳机后,即使是扬声器也没有声音。当我触摸屏幕时audioApp会崩溃。

与用耳机启动应用程序并将耳机插入相同。

我该如何解决这个错误? 我很感激你的建议。

这是我收到的错误消息。

Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: 'required condition is false: _engine->IsRunning()' 
*** First throw call stack: 
(0x184d61e48 0x1954a80e4 0x184d61d08 0x1836d26c0 0x1836fa328 0x1836f975c 0x1000d03c0 0x1000d0728 0x1895450f8 0x18952e22c 0x189544a94 0x189544720 0x18953dc74 0x18951138c 0x1897b01b4 0x18950f8f4 0x184d1a0e8 0x184d1938c 0x184d1743c 0x184c451f4 0x18ddd35a4 0x189576784 0x1000d5614 0x1000d5654 0x195b16a08) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

回答

3

您需要注册的AVAudioEngineConfigurationChangeNotification通知,并做必要的步骤来更新输出节点。

+1

工作,谢谢!我也使用[这个链接](http://stackoverflow.com/questions/24126261/swift-alternative-to-performselectoronmainthread)如何改变标签文本,而开/关耳机。 – 2014-11-18 09:39:45

+2

那么更新输出节点的必要步骤是什么?我正在使用mainMixer节点,根本不使用引擎的输出节点。但是,当我插入耳机时,引擎无法启动。 – 2015-03-13 11:20:48

+1

如果您刚插入一个新的输出节点,则需要将其连接到mainMixer节点。 – Allen 2015-03-14 02:09:53