Ich habe versucht, mithilfe dieser Code die Liste der verfügbaren Audio-Eingabegeräte auf einem iPhone zu holen:Für was ist kAudioSessionProperty_InputSources eigentlich gut?
CFArrayRef arrayRef;
UInt32 size = sizeof(arrayRef);
OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_InputSources, &size, &arrayRef);
assert(status == noErr);
NSArray *array = (__bridge NSArray *)arrayRef;
Der Aufruf funktioniert und kehrt ohne Fehler, aber die Ergebnisse Array ist immer leer, egal welche Hardware Ich habe mich damit verbunden. Ich habe zwei übliche Headsets für Handys ausprobiert, ein Original von Apple und eines von Samsung und zwei Arten von USB-Mikrofonen (ein iXY from Rode und ein iM2X from Tascam), aber das Array bleibt immer leer. Ich frage mich also, welche Arten von Eingabequellen tatsächlich von dieser Eigenschaft aufgelistet werden? Ist es überhaupt nutzbar?
Mithilfe eines Listener-Rückrufs auf den Audio-Routen konnte ich überprüfen, dass alle 4 Geräte korrekt erkannt werden. Ich konnte auch Audio mit jedem der Geräte aufnehmen, so dass sie alle richtig funktionieren. Ich benutze ein iPhone 4S mit iOS 6.1.3 (10B329).
Sieht aus wie Sie richtig sind. "' kAudioSessionProperty_InputSources' "ist nur für USB-basierte Audio-Eingänge. Das ist bedauerlich, da es keine nicht veraltete Möglichkeit gibt, *** alle *** Audio-Eingänge über Core Foundation/C-Funktionen (die nicht Objective-C-spezifisch sind) zu erhalten. –
@MichaelDautermann Vielen Dank, ich stimme zu, dass es bedauerlich ist, wenn man bedenkt, dass die Alternativen auf höherer Ebene mehr Overhead haben. – Bamsworld
@MichaelDautermann und andere, können Sie mir sagen, welche Objective-C-Alternativen gibt es, um die Nicht-Kamera-Verbindung-Kit-Eingabegeräte zu erhalten? Ist es der von Shawn Hershey in seiner Antwort auf diese Frage erwähnte? –