初始化AVAudioSession时保持蓝牙的声音
我即将发疯。
我有一个录音应用程序。 我遇到了一个问题,当我打开我的应用程序,如果我在蓝牙设备上听音乐,它会自动路由回到手机内部扬声器。
我希望一切都保持不变。 即使当我开始录音,如果用户正在听蓝牙扬声器上的东西,继续这样做。 用户有耳机? 保持音乐在那里。 只是保持原样。
这是我目前正在初始化我的会议:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers | AudioSessionCategoryOptionAllowBluetooth error: nil];
我允许它播放,录制,与其他人混合,并允许蓝牙,那么为什么它重新路由audio输出回到内部扬声器?
谢谢
5月30日编辑
我设法得到更好的东西,但仍然失去了一些东西。
如果我添加这一行:
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];
音乐停留在蓝牙设备,但听起来很可怕。
根据这个答案: https : //stackoverflow.com/a/18541874/517688这是因为
EnableBluetoothInput根据这个影响input和输出。 另外请记住,由于蓝牙input设备的限制,audio将以8000Hz播放
那么在使用蓝牙设备时,没有办法让所有的东西都保持不变而不会扭曲声音?
在iOS 10中,Apple添加了选项AVAudioSessionCategoryOptionAllowBluetoothA2DP
。 他们还将AudioSessionCategoryOptionAllowBluetooth
的含义AudioSessionCategoryOptionAllowBluetooth
为仅允许使用HFP蓝牙configuration文件输出,这是您获得低质量audio输出的地方。
如果使用这个新选项代替代码片段中的AudioSessionCategoryOptionAllowBluetooth
选项,它将允许高质量的输出,但不允许低质量的audio输出。
以下是选项的在线文档,但很遗憾,没有关于新的iOS 10在线选项的说明。 您可以在AVAudioSession.h
的代码文档中看到更多的细节。 https://developer.apple.com/reference/avfoundation/avaudiosessioncategoryoptions?language=objc
不幸的是,我直接从Apple技术支持获得了这个答案
鉴于目前的运输系统configuration,没有支持的方式来实现所需的function。 如果您希望Apple将来考虑添加对此类function的支持,请通过http://bugreport.apple.com上的Bug Reporter工具提交增强请求。
就是这样了…