我正试图在 Objective-C 中实现一个功能,其中用例要求用户说话 Hands-Free 蓝牙耳机,并将他们的声音与音频文件混合并通过耳机插孔播放。
我让程序工作,并允许通过 HFB 混合麦克风和音频,或使用有线麦克风。但音频始终与麦克风源播放相同的位置。我找不到只覆盖音频输出到耳机插孔的方法。
我使用下面的代码,我在文档中找到了覆盖输出到扬声器的代码,但我找不到强制音频到耳机插孔的代码:
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
上述代码行的另一个问题是它覆盖了内置扬声器和内置麦克风的输入和输出。
回到我的使用案例 - 我需要使用免提蓝牙来通过耳机插孔发出声音。有什么想法可以实现吗?
1 回答
我有一个非常相似的用例,但在搜索 Apple 文档并直接与 Apple 交谈后,目前无法独立设置输入和输出数据 sources/ports。
根据 Apple 的文档:
https://developer.apple.com/library/ios/qa/qa1799/_index.html
如果应用程序使用 setPreferredInput:error:方法选择蓝牙 HFP 输入,则输出将自动更改为蓝牙 HFP 输出。此外,使用 MPVolumeView 的路由选择器选择蓝牙 HFP 输出将自动将输入更改为蓝牙 HFP 输入。因此,即使仅单独设置输入或输出,输入和输出也将始终在蓝牙 HFP 设备上结束。
向 Apple 提交错误报告。如果有足够的投诉,他们可能会改变它。