【问题标题】:AVAudioSession setCategory .allowBluetooth causes crashAVAudioSession setCategory .allowBluetooth 导致崩溃
【发布时间】:2020-03-08 22:45:25
【问题描述】:

我正在编写一个使用 AVAudioSession 记录用户音频的应用程序。当我没有在选项中添加蓝牙时,一切都很好,但我也希望能够使用 AirPods 进行录制。当我添加 .allowBluetooth 选项时,它会产生崩溃并且不再起作用。

        do {
            let session = AVAudioSession.sharedInstance()
            try session.setCategory(.record, mode: .default, options: [.defaultToSpeaker, .allowBluetooth])
            try session.setActive(true)
        } catch let error as NSError {
            print(error.localizedDescription)
            return
        }

对此有什么建议吗?我浏览了许多与该主题相关的 SO 帖子,但没有发现似乎可以解决我的问题。

【问题讨论】:

  • 崩溃的详细信息是什么?异常消息?哪一行代码?
  • 操作无法完成。 (OSStatus 错误 -50。)

标签: ios swift avaudiosession


【解决方案1】:

您收到错误代码 -50,表示参数无效。

这是因为.defaultToSpeaker 选项只能与playAndRecord 类别一起使用:

您只能在使用playAndRecord 类别时设置此选项。它用于修改类别的路由行为,以便在没有使用其他配件(例如耳机)时,音频始终路由到扬声器而不是接收器。

所以要么删除此选项,要么使用playAndRecord 类别。

【讨论】:

  • 这似乎是解决办法。感谢您的帮助!
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 1970-01-01
  • 2019-02-24
  • 2018-01-23
  • 2020-12-02
相关资源
最近更新 更多