AVAudioSessionCategoryPlayAndRecord与Airplay

我的应用程序使用麦克风和输出audio,所以我设置我的audio会话播放和logging类别,但这似乎禁用Airplay。 如果将类别设置为“播放”,则Airplay可以正常播放我的输出(但显然input不起作用)。

我已经尝试覆盖输出路由到扬声器,以防万一它需要通过Airplay输出,但没有喜悦。

有任何想法吗?

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

如果不是的话,那么当使用PlayAndRecord类别时,iOS不会将其作为选项提供,因为该设备不能播放录制。 它会显示在使用Play类别时。

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

如果你想改变audio的位置,你需要调用AudioSessionSetProperty,并传递一个常量来指定audio的位置。 这些常数是

kAudioSessionOverrideAudioRoute_None,它指定你希望audio被路由到接收器(如果这是它正在发生的地方),或者

kAudioSessionOverrideAudioRoute_Speaker,它指定audio应该路由到电话底部的扬声器。

你可以试试这个代码

// 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); 

从audio会话编程指南>使用类别> selectAirPlay的类别和模式 :

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

  • AVAudioSessionCategorySoloAmbient
  • AVAudioSessionCategoryAmbient
  • AVAudioSessionCategoryPlayback

AVAudioSessionCategoryPlayAndRecord类别仅支持镜像Airplay。