首页 文章

初始化AVAudioSession时保持蓝牙声音

提问于
浏览
8

我快要疯了 .

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

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

这就是我目前正在初始化会话的方式:

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

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

谢谢

EDIT on May 30th

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

如果我添加这一行:

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

音乐留在蓝牙设备但听起来很糟糕 .

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

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

因此,在使用蓝牙设备时,没有办法保持一切不变,而不会扭曲声音?

2 回答

  • 5

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

    如果您使用此新选项代替代码段中的 AudioSessionCategoryOptionAllowBluetooth 选项,它将允许高质量输出但不允许低质量音频输出 .

    这里's the online documentation for the options, but unfortunately there'没有在线新iOS 10选项的描述 . 您可以在 AVAudioSession.h 的代码内文档中查看更多详细信息 . https://developer.apple.com/reference/avfoundation/avaudiosessioncategoryoptions?language=objc

  • 0

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

    根据当前出货的系统配置,没有支持的方法来实现所需的功能 . 如果您希望Apple将来考虑添加对此类功能的支持,请通过http://bugreport.apple.com上的Bug Reporter工具提交增强请求 .

    就是这样了...

相关问题