【问题标题】:Keep bluetooth sound when initializing AVAudioSession初始化 AVAudioSession 时保持蓝牙声音
【发布时间】:2014-07-16 17:52:31
【问题描述】:

我快疯了。

我有一个录音应用。我遇到了一个问题,当我打开我的应用程序时,如果我在蓝牙设备上听音乐,它会自动路由回手机内部扬声器。

无论如何,我希望一切都保持不变。即使当我开始录制时,如果用户正在蓝牙扬声器上收听某些内容,请继续这样做。用户有耳机吗?把音乐留在那里。让一切保持原样。

这就是我当前初始化会话的方式:

[[AVAudioSession sharedInstance]
    setCategory:AVAudioSessionCategoryPlayAndRecord
    withOptions:AVAudioSessionCategoryOptionMixWithOthers | AudioSessionCategoryOptionAllowBluetooth
    error: nil];

我允许它播放、录制、与其他人混音并允许蓝牙,那么为什么它将音频输出重新路由回内部扬声器?

谢谢

5 月 30 日编辑

我设法得到了更好的东西,但仍然缺少一些东西。

如果我添加这一行:

[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];

音乐保留在蓝牙设备中,但听起来很糟糕。

根据这个答案:https://stackoverflow.com/a/18541874/517688这是因为

EnableBluetoothInput 根据此影响输入和输出。还要记住,由于蓝牙输入设备的限制,音频将以 8000 Hz 播放

所以在使用蓝牙设备时,没有办法在不失真的情况下保持一切不变??

【问题讨论】:

  • 希望下面的回答对你有帮助.. @Jan
  • 如果您仍在使用 SO,您能否查看我 2018 年 4 月 9 日的问题并告诉我是否是相同/相似的问题?谢谢!!
  • @BooberBunz 不,不幸的是,这与您所经历的无关......
  • @BooberBunz 但我确实回答了你的问题!

标签: ios iphone objective-c bluetooth avaudiosession


【解决方案1】:

在 iOS 10 中,Apple 添加了选项AVAudioSessionCategoryOptionAllowBluetoothA2DP。他们还更改了 AudioSessionCategoryOptionAllowBluetooth 的含义,只允许使用 HFP 蓝牙配置文件进行输出,这是您获得低质量音频输出的地方。

如果您在代码 sn-p 中使用此新选项代替 AudioSessionCategoryOptionAllowBluetooth 选项,它将允许高质量输出但不允许低质量音频输出。

这是选项的在线文档,但不幸的是,没有在线描述新的 iOS 10 选项。您可以在AVAudioSession.h 的代码内文档中查看更多详细信息。 https://developer.apple.com/reference/avfoundation/avaudiosessioncategoryoptions?language=objc

【讨论】:

  • 这对通过避雷线路由音频有用吗?即 mac 通过电缆连接到 iPhone 扬声器作为输入
  • @Suraya 我提到的类别选项仅与蓝牙有关
  • @Suraya,对不起,我没有。我建议开始一个新线程,因为它与 OP 的问题无关
  • 感谢您对代码内文档的评论。很有帮助。
【解决方案2】:

不幸的是,我直接从 Apple 技术支持那里得到了这个答案

鉴于当前发布的系统配置,没有支持的方式来实现所需的功能。如果您希望 Apple 考虑在未来添加对此类功能的支持,请通过 Bug Reporter 工具提交增强请求,地址为 http://bugreport.apple.com

原来如此……

【讨论】:

    猜你喜欢
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 2023-04-09
    • 2015-10-21
    • 2010-10-26
    • 2012-12-14
    相关资源
    最近更新 更多