我尝试使用以下代码获取 iPhone 上可用音频输入设备的列表:
CFArrayRef arrayRef;
UInt32 size = sizeof(arrayRef);
OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_InputSources, &size, &arrayRef);
assert(status == noErr);
NSArray *array = (__bridge NSArray *)arrayRef;
该调用可以正常工作并返回,但结果数组始终为空,无论我连接的是什么硬件。我尝试了两种常用的手机耳机,一种来自 Apple 的原装耳机,一种来自三星的原装耳机,以及两种 USB 麦克风(Rode的iXY 和 Tascam的 iM2X ),但阵列始终为空。所以我想知道这个属性实际上会列出什么样的输入源?它完全可用吗?
通过在音频路由上使用侦听器回调,我能够验证是否正确检测到所有 4 个设备。我还能够使用每个设备录制音频,因此它们都可以正常工作。我使用带有 iOS 6.1.3 (10B329) 的 iPhone 4S。