34

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

我尝试过覆盖到扬声器的输出路由,以防它需要通过 Airplay 输出,但没有乐趣。

有任何想法吗?

4

4 回答 4

3

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

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

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

于 2013-10-10T02:02:16.593 回答
1

来自音频会话编程指南 › 使用类别 ›为 AirPlay 选择类别和模式

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

  • AVAudioSessionCategorySoloAmbient
  • AVAudioSessionCategoryAmbient
  • AVAudioSessionCategoryPlayback

AVAudioSessionCategoryPlayAndRecord类别仅支持镜像 Airplay。

于 2016-11-21T03:28:22.563 回答
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);
于 2013-08-08T18:42:44.527 回答
0

如果你想改变音频的去向,你需要调用 AudioSessionSetProperty,并传递给它指定你希望音频去向的常量。这些常数是

kAudioSessionOverrideAudioRoute_None,它指定您希望将音频路由到接收器(如果这是它要去的地方,则为空中播放),或者

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

于 2013-05-30T20:07:41.547 回答