iOS无法在扬声器上播放并设置音频会话进行录制

期望的功能:1)插入时通过耳机播放音频,2)当耳机未插入时通过扬声器播放音频,以及3)通过耳机或内置麦克风录制音频。

为了让它在扬声器和耳机上播放音频,我使用以下音频会话类型:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: &setCategoryError];

然后创建一个音频播放器的实例。 这非常适合在插入时通过耳机播放音频并在播放时播放扬声器,直到我尝试录制。

录制时,我首先将音频会话设置为AVAudioSessionCategoryPlayAndRecord ,然后尝试使用Novicane进行录制。 有时候这会成功,但是其他时候应用程序崩溃而没有堆栈跟踪或调试器指示,并给出AUIOClient_StartIO错误。

我的谷歌搜索这个错误表明我需要随时保持会话AVAudioSessionCategoryPlayAndRecord 。 这看起来确实会导致AUIOClient_StartIO错误发生。

但是每当我使用AVAudioSessionCategoryPlayAndRecord进行播放时,它将开始播放内置耳机而不是扬声器。

我知道我可以覆盖扬声器的音频输出通道(例如https://stackoverflow.com/a/1064941/895876),但插入耳机不会自动切换到耳机音频。

我如何获得所有三个功能?


您必须使用AUHAL设备将特定输入设备设置为默认输入,然后将其与AudioQueue连接。

看看这个苹果技术。 请注意,它可能会帮助你..

如果这不起作用, AVAudioSession使用setPreferredInput:尝试AVAudioSession setPreferredInput:

这是根据我最近阅读的内容,我没有真正尝试它,但知道其他人成功地尝试它。

祝你好运。

链接地址: http://www.djcxy.com/p/79033.html

上一篇: iOS Cannot play on speaker and set Audio Session to record

下一篇: iOS background audio recording after call