我快要疯了 .
我有一个录音应用程序 . 我遇到了一个问题,当我打开我的应用程序时,如果我正在蓝牙设备上听音乐,它会自动路由回到手机内置扬声器 .
无论如何,我希望一切都保持不变 . 即使我开始录制,如果用户正在收听蓝牙音箱上的某些内容,请继续这样做 . 用户有耳机吗?保持音乐在那里 . 请保持原样 .
这就是我目前正在初始化会话的方式:
[[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 回答
在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不幸的是,我直接从Apple技术支持获得了这个答案
就是这样了...