初始化 AVAudioSession 时保持蓝牙声音
Posted
技术标签:
【中文标题】初始化 AVAudioSession 时保持蓝牙声音【英文标题】:Keep bluetooth sound when initializing 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://***.com/a/18541874/517688这是因为
EnableBluetoothInput 根据此影响输入和输出。还要记住,由于蓝牙输入设备的限制,音频将以 8000 Hz 播放
所以在使用蓝牙设备时,没有办法在不失真的情况下保持一切不变??
【问题讨论】:
希望下面的回答对你有帮助.. @Jan 如果您仍在使用 SO,您能否查看我 2018 年 4 月 9 日的问题并告诉我是否是相同/相似的问题?谢谢!! @BooberBunz 不,不幸的是,这与您所经历的无关...... @BooberBunz 但我确实回答了你的问题! 【参考方案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。
原来如此……
【讨论】:
以上是关于初始化 AVAudioSession 时保持蓝牙声音的主要内容,如果未能解决你的问题,请参考以下文章