次のコードを使用して、iPhone で使用可能なオーディオ入力デバイスのリストを取得しようとしました。
CFArrayRef arrayRef;
UInt32 size = sizeof(arrayRef);
OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_InputSources, &size, &arrayRef);
assert(status == noErr);
NSArray *array = (__bridge NSArray *)arrayRef;
呼び出しは機能し、エラーなしで返されますが、接続したハードウェアに関係なく、結果配列は常に空です。Apple 製のオリジナルと Samsung 製の 1 つ、および 2 種類の USB マイク ( RodeのiXY と Tascamの iM2X ) の 2 つの通常のモバイル用ヘッドセットを試しましたが、アレイは常に空のままです。では、このプロパティによって実際にどのような種類の入力ソースがリストされるのだろうか? 全然使えますか?
オーディオ ルートでリスナー コールバックを使用することにより、4 つのデバイスすべてが正しく検出されていることを確認できました。また、各デバイスでオーディオを録音することもできたので、すべて正常に動作しました。iOS 6.1.3 (10B329) を搭載した iPhone 4S を使用しています。