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。