与Airplay的AVAudioSessionCategoryPlayAndRecord(AVAud

2019-07-30 05:31发布

我的应用程序使用麦克风和音频输出,所以我设置我的音频会话的播放和录音范畴,但这似乎禁用的Airplay。 如果我设定播放该类别中,Airplay的正常工作与我的输出(但显然输入不工作)。

我试图重写对扬声器的输出路径,在情况下,它需要一个过度的Airplay输出,但没有喜悦。

有任何想法吗?

Answer 1:

什么AirPlay的设备是你想使用? 它有一个麦克风?

如果没有,使用PlayAndRecord类别时,因为该设备无法播放录制的iOS不会出现它作为一个选项。 使用播放类别,虽然什么时候会出现。

另外,如果你正在使用的设备是蓝牙设备,是否设置AVAudioSessionCategoryOptionAllowBluetooth为YES?



Answer 2:

如果您想要更改音频是怎么回事,你需要调用AudioSessionSetProperty,并通过它,你想要的声音去不断的指定。 这些常量

kAudioSessionOverrideAudioRoute_None,指定您希望的音频被路由到接收方(单曲,如果这就是它是怎么回事),或

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



Answer 3:

你可以试试这个代码

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


Answer 4:

从音频会话编程指南>使用类别> 选择类别和模式AirPlay播放 :

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

  • AVAudioSessionCategorySoloAmbient
  • AVAudioSessionCategoryAmbient
  • AVAudioSessionCategoryPlayback

AVAudioSessionCategoryPlayAndRecord类别只支持镜像的Airplay。



文章来源: AVAudioSessionCategoryPlayAndRecord with Airplay