7

次のコードを使用して、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 マイク ( RodeiXY と Tascamの iM2X ) の 2 つの通常のモバイル用ヘッドセットを試しましたが、アレイは常に空のままです。では、このプロパティによって実際にどのような種類の入力ソースがリストされるのだろうか? 全然使えますか?

オーディオ ルートでリスナー コールバックを使用することにより、4 つのデバイスすべてが正しく検出されていることを確認できました。また、各デバイスでオーディオを録音することもできたので、すべて正常に動作しました。iOS 6.1.3 (10B329) を搭載した iPhone 4S を使用しています。

4

2 に答える 2

2

私はiPhoneでのオーディオプログラミングに非常に慣れていないので、その特定のプロパティが何に適しているかという質問に対する答えはありませんが、オーディオ入力のリストが必要な場合は、これでうまくいくと思います:

NSArray * ais = [[AVAudioSession sharedInstance] availableInputs];

これは、AVAudioSessionPortDescription オブジェクトの配列を提供します。

for (id object in ais) {
    AVAudioSessionPortDescription * pd = (AVAudioSessionPortDescription*)object;
    NSLog(@"%@",pd.portName);
}
于 2014-01-08T00:44:34.097 に答える