我試着通過使用此代碼來獲取一個iPhone上可用的音頻輸入設備列表:kAudioSessionProperty_InputSources實際上適合什麼?
CFArrayRef arrayRef;
UInt32 size = sizeof(arrayRef);
OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_InputSources, &size, &arrayRef);
assert(status == noErr);
NSArray *array = (__bridge NSArray *)arrayRef;
通話作品並返回沒有錯誤,但結果陣列始終是空的,不管是什麼硬件我已經連接到它。我已經嘗試了兩種手機耳機,一種是Apple的原裝耳機,一種是三星的耳機,兩種USB麥克風(iXY from Rode和iM2X from Tascam),但陣列一直保持空白。所以我想知道這個屬性實際上會列出哪些輸入源?它可以使用嗎?
通過在音頻路由上使用偵聽器回調,我可以驗證是否正確檢測到所有4個設備。我也能夠用每個設備錄製音頻,所以它們都能正常工作。我在iOS 6.1.3(10B329)上使用iPhone 4S。
看起來你是對的。 「'kAudioSessionProperty_InputSources'」僅適用於基於USB的音頻輸入。這是不幸的,因爲沒有一種不被棄用的方式通過Core Foundation/C函數(不是Objective-C特定的)獲得***全部***音頻輸入。 –
@MichaelDautermann謝謝你,我同意這是不幸的,因爲更高級別的選擇會帶來更多的開銷。 – Bamsworld
@MichaelDautermann和其他人,你能告訴我哪些Objective-C替代品可以獲得非相機連接套件輸入設備嗎?這是Shawn Hershey在回答這個問題時提到的嗎? –