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

是否可以从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;
        }
}

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

问题是,当耳机是蓝牙耳机时,此方法不起作用.如果我将蓝牙耳机连接到iPhone,然后调用上面的方法,内置麦克风将成为输入设备,这很棒,但输出设备也将更改为iPhone的接收器,这是不好的.

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

解决方法

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

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

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...