在 iOS 中通过蓝牙播放时从内置麦克风录音

ycs*_*sun 7 iphone audio bluetooth ios avaudiosession

是否可以从 iPhone 的内置麦克风接收音频输入,并同时通过蓝牙耳机播放该音频?

我的目标是始终使用内置麦克风作为输入设备,即使输出设备是耳机,因为内置麦克风在我的用例中更方便。

当输出设备是有线耳机时,我知道如何实现我的目标,比如与 iPhone 捆绑在一起的耳机。我只需插入有线耳机,然后调用以下方法:

- (void)selectBuiltInMicrophone
{
    AVAudioSession *session = [AVAudioSession sharedInstance];
    for (AVAudioSessionPortDescription *port in session.availableInputs)
        if ([port.portType isEqualToString:AVAudioSessionPortBuiltInMic]) {
            NSError *error;
            [session setPreferredInput:port error:&error];
            break;
        }
}
Run Code Online (Sandbox Code Playgroud)

通过调用上述方法,输入设备将从有线耳机的麦克风切换到iPhone的内置麦克风,而输出设备不受影响,因此iPhone将从内置麦克风录音并通过有线耳机播放。这是我所期望的。

问题是,当耳机是蓝牙耳机时,这种方法不起作用。如果我把蓝牙耳机连接到iPhone,然后调用上面的方法,内置麦克风会变成输入设备,这很好,但输出设备也会变成iPhone的接收器,这很糟糕。

蓝牙耳机的输入和输出似乎被锁定在一起:您要么同时使用它们,要么不使用它们。我的目标真的不可能吗?或者有没有办法克服明显的限制?

小智 4

无法同时接收来自 iPhone 内置麦克风的音频输入并通过蓝牙耳机播放该音频

  1. 有一种预防措施可以像对讲机一样使用 。
  2. 你必须创建两个会话。意味着在录制音频时,您必须通过录制和播放启用音频会话。
  3. 在播放时,您必须将选项设置为audiosession(允许蓝牙)。
  4. 录音时您必须设置录音和播放。