我快要疯了。
我有一个录音应用程序。我遇到了一个问题,当我打开我的应用程序时,如果我在蓝牙设备上听音乐,它会自动路由回到手机内置扬声器。
无论如何,我希望一切都保持不变。即使我开始录制,如果用户正在收听蓝牙音箱上的某些内容,请继续这样做。用户有耳机吗?保持音乐在那里。请保持原样。
这就是我目前正在初始化会话的方式:
[[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的频率播放
因此,在使用蓝牙设备时,如果不扭曲声音,就无法保持一致吗?
答案 0 :(得分:6)
在iOS 10中,Apple添加了选项AVAudioSessionCategoryOptionAllowBluetoothA2DP
。他们还将AudioSessionCategoryOptionAllowBluetooth
的含义更改为仅允许使用HFP蓝牙配置文件进行输出,这是您获得低质量音频输出的地方。
如果您使用此新选项代替代码段中的AudioSessionCategoryOptionAllowBluetooth
选项,它将允许高质量输出但不允许低质量音频输出。
这里是选项的在线文档,但不幸的是,没有关于新的iOS 10选项的在线描述。您可以在AVAudioSession.h
的代码内文档中查看更多详细信息。
https://developer.apple.com/reference/avfoundation/avaudiosessioncategoryoptions?language=objc
答案 1 :(得分:0)
不幸的是,我直接从Apple技术支持
得到了这个答案根据当前发货的系统配置,没有支持的方法来实现所需的功能。如果您希望Apple将来考虑添加对此类功能的支持,请通过http://bugreport.apple.com上的Bug Reporter工具提交增强请求。
就是这样......