【问题标题】:AVAudioSessionCategoryPlayAndRecord makes AirPlay invisibleAVAudioSessionCategoryPlayAndRecord 让 AirPlay 不可见
【发布时间】:2012-10-30 11:39:05
【问题描述】:

我遇到以下问题:每当我在应用程序中将播放和录制类别设置为音频会话时,AirPlay 就变得不可用:

[[AVAudioSession sharedInstance]
        setCategory: AVAudioSessionCategoryPlayAndRecord
        error: &setCategoryError];

此调用使 AirPlay 消失并立即将音频重新路由到扬声器。

问题可以很容易地重现,例如在 Xcode 文档中的示例项目avTouch 上,将AVAudioSessionCategoryPlayback 类别替换为AVAudioSessionCategoryPlayAndRecord:在原始示例中,AirPlay 选择器是可见的并且允许更改输出源,而使用AVAudioSessionCategoryPlayAndRecord 类别,选择器会消失。

是否有适当的方法可以切换到AVAudioSessionCategoryPlayAndRecord 类别以便 AirPlay 仍然可用?

(这样的问题已经already asked,但没有得到任何答案。)

【问题讨论】:

  • 您可能不得不尝试使用一些私有 API。检查这是否有帮助。 spin.atomicobject.com/2012/04/23/…他们提到了一些私有api。
  • @ACB:谢谢!我看了上面提到的文章,但正如你所说,他们使用的是私有 API,我无法使用,因为我正在从事的项目是通过 App Store 分发的。
  • @Anastasia 你有解决方案吗?我和你面临同样的问题。谢谢
  • @Jacky 不,我没有解决方案。不过,Jonathan Arbogast 的想法听起来很可能。

标签: objective-c ios ipad airplay avaudiosession


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我认为您应该在AVAudioSession 上方添加以下代码。我希望它有效。

    NSError *setCategoryError = nil;
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: &setCategoryError];
    
    if (setCategoryError) {
        // Handle error
    }
    

    【讨论】:

      【解决方案3】:

      嗯,Air​​Play 和 PlayAndRecord 类别是不兼容的。 这是我从 Apple 论坛中学到的。

      当音频输出发生在其他地方时,为什么需要设备上的音频输入?

      【讨论】:

      • 应用程序播放视频流(可能通过AirPlay输出声音)并同时记录该流。有意义吗?
      • 重点是,插入式耳机的音频工作正常,所以我很自然地认为连接 AirPlay 的耳机应该以相同的方式工作。
      • -1:您可能需要它的原因有很多。我的一位客户希望使用我的音频监控软件通过播放音频来执行房间响应检查,然后监控 iPhone 记录的内容(在测量模式下)。太烦人了,苹果完全阻止了这一点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 1970-01-01
      • 2011-05-08
      • 2011-04-02
      • 1970-01-01
      相关资源
      最近更新 更多