AVAudioSessionCategoryPlayAndRecord with Airplay

时间:2012-07-03 20:59:58

标签: ios airplay avaudiosession

我的应用程序使用麦克风并输出音频,因此我将音频会话设置为播放和录制类别,但这似乎禁用了Airplay。如果我将类别设置为Play,Airplay可以正常输出(但显然输入不起作用)。

我已经尝试将输出路径覆盖到扬声器,以防它需要通过Airplay输出,但没有快乐。

有什么想法吗?

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

如果您想要更改音频的位置,您需要调用AudioSessionSetProperty,并将常量传递给您指定音频的去向。这些常量是

kAudioSessionOverrideAudioRoute_None,指定您希望将音频路由到接收器(播放时是否播放),或者

kAudioSessionOverrideAudioRoute_Speaker,指定音频应路由到手机底部的扬声器。

答案 2 :(得分:0)

您可以尝试此代码

// Set AVAudioSession
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];

// Change the default output audio route
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,
  sizeof(doChangeDefaultRoute), &doChangeDefaultRoute);

答案 3 :(得分:0)

从音频会话编程指南>使用类别> Choosing Categories and Modes for AirPlay

只有特定的类别和模式才支持AirPlay。以下类别同时支持Airplay的镜像版本和非镜像版本:

  • AVAudioSessionCategorySoloAmbient
  • AVAudioSessionCategoryAmbient
  • AVAudioSessionCategoryPlayback

AVAudioSessionCategoryPlayAndRecord类别仅支持镜像Airplay。