Jan*_*Jan 8 iphone bluetooth objective-c ios avaudiosession
我快要疯了.
我有一个录音应用程序.我遇到了一个问题,当我打开我的应用程序时,如果我正在蓝牙设备上听音乐,它会自动路由回到手机内置扬声器.
无论如何,我希望一切都保持不变.即使我开始录制,如果用户正在收听蓝牙音箱上的某些内容,请继续这样做.用户有耳机吗?保持音乐在那里.请保持原样.
这就是我目前正在初始化会话的方式:
[[AVAudioSession sharedInstance]
setCategory:AVAudioSessionCategoryPlayAndRecord
withOptions:AVAudioSessionCategoryOptionMixWithOthers | AudioSessionCategoryOptionAllowBluetooth
error: nil];
Run Code Online (Sandbox Code Playgroud)
我允许它播放,录制,与其他人混音并允许蓝牙,那么为什么要将音频输出重新路由回内置扬声器?
谢谢
编辑于5月30日
我设法得到更好的东西,但仍然缺少一些东西.
如果我添加这一行:
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];
Run Code Online (Sandbox Code Playgroud)
音乐留在蓝牙设备但听起来很糟糕.
根据这个答案:https://stackoverflow.com/a/18541874/517688这是因为
EnableBluetoothInput会根据此影响输入和输出.还要记住,由于蓝牙输入设备的限制,音频将以8000 Hz的频率播放
因此,在使用蓝牙设备时,没有办法保持一切不变,而不会扭曲声音?
在iOS 10中,Apple添加了该选项AVAudioSessionCategoryOptionAllowBluetoothA2DP.他们还改变了意思,AudioSessionCategoryOptionAllowBluetooth只允许使用HFP蓝牙配置文件进行输出,这是您获得低质量音频输出的地方.
如果您使用此新选项代替AudioSessionCategoryOptionAllowBluetooth代码段中的选项,它将允许高质量输出但不允许低质量音频输出.
这是选项的在线文档,但不幸的是,没有在线新的iOS 10选项的描述.您可以在代码内文档中查看更多详细信息AVAudioSession.h.
https://developer.apple.com/reference/avfoundation/avaudiosessioncategoryoptions?language=objc
不幸的是我直接从苹果技术支持得到了这个答案
鉴于当前的运输系统配置,不存在支持的方法来实现所需的功能。如果您希望 Apple 考虑将来添加对此类功能的支持,请通过http://bugreport.apple.com上的 Bug Reporter 工具提交增强请求。
就是这样了...
| 归档时间: |
|
| 查看次数: |
3411 次 |
| 最近记录: |