AVAudioSessionCategoryPlayAndRecord使AirPlay不可见

时间:2012-10-30 11:39:06

标签: objective-c ios ipad airplay avaudiosession

我遇到以下问题:每当我在我的应用程序中将播放和录制类别设置为音频会话时,AirPlay就不可用:

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

此调用使AirPlay消失并立即将音频重新路由到扬声器。

问题可以很容易地重现,例如在Xcode文档中的示例项目avTouch中,将AVAudioSessionCategoryPlayback类别替换为AVAudioSessionCategoryPlayAndRecord:在原始示例中,AirPlay选择器可见并允许更改输出源,而使用AVAudioSessionCategoryPlayAndRecord选择器消失的类别。

是否有正确的方式切换到AVAudioSessionCategoryPlayAndRecord类别以便AirPlay仍可用?

(像这样的问题是already asked,但没有得到任何答案。)

3 个答案:

答案 0 :(得分:1)

您尝试使用哪种AirPlay设备?它有麦克风吗?

如果没有,iOS在使用PlayAndRecord类别时不会将其作为选项显示,因为该设备无法播放记录。它会在使用Play类别时显示。

此外,如果您使用的设备是蓝牙设备,您是否将AVAudioSessionCategoryOptionAllowBluetooth设置为YES?

答案 1 :(得分:0)

我认为您应该在AVAudioSession上方添加以下代码。我希望它有效。

NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: &setCategoryError];

if (setCategoryError) {
    // Handle error
}

答案 2 :(得分:-1)

嗯,Air​​Play和PlayAndRecord类别只是不兼容。 这就是我从Apple论坛学到的东西。

当音频输出发生在其他地方时,为什么需要在设备上输入音频?