gpt4 book ai didi

ios - 初始化 AVAudioSession 时保持蓝牙声音

转载 作者:可可西里 更新时间:2023-11-01 03:10:12 25 4
gpt4 key购买 nike

我快要疯了。

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

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

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

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

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

谢谢

5 月 30 日编辑

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

如果我添加这一行:

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

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

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

EnableBluetoothInput affects both input and output according to this. Also remember, the audio will play at 8000 Hz due to the limitation of bluetooth input devices

所以在使用蓝牙设备时,没有办法保持一切不变而不失真声音??

最佳答案

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

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

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

关于ios - 初始化 AVAudioSession 时保持蓝牙声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23895832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com